diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-03-13 01:12:57 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-03-13 01:14:09 +0100 |
commit | d469fa1923958f98df9d9b0a9cc167248d8516fb (patch) | |
tree | 5e398fe8703552c62ae9cc550da156fbc9185fab | |
parent | cfc1efc77c7a996b3da7c125c43f7c759cb6d144 (diff) | |
parent | adfa53d67c7a3318157ea9d95e8bdcfb77139452 (diff) | |
download | ffmpeg-d469fa1923958f98df9d9b0a9cc167248d8516fb.tar.gz |
Merge commit 'adfa53d67c7a3318157ea9d95e8bdcfb77139452'
* commit 'adfa53d67c7a3318157ea9d95e8bdcfb77139452':
lavc: remove disabled FF_API_VDA_ASYNC cruft
Conflicts:
libavcodec/vda.h
libavcodec/vda_h264.c
libavcodec/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/vda.h | 75 | ||||
-rw-r--r-- | libavcodec/vda_h264.c | 102 | ||||
-rw-r--r-- | libavcodec/version.h | 3 |
3 files changed, 0 insertions, 180 deletions
diff --git a/libavcodec/vda.h b/libavcodec/vda.h index de7070edea..281785f294 100644 --- a/libavcodec/vda.h +++ b/libavcodec/vda.h @@ -41,10 +41,6 @@ #include "libavcodec/version.h" -#if FF_API_VDA_ASYNC -#include <pthread.h> -#endif - /** * @defgroup lavc_codec_hwaccel_vda VDA * @ingroup lavc_codec_hwaccel @@ -52,39 +48,6 @@ * @{ */ -#if FF_API_VDA_ASYNC -/** - * This structure is used to store decoded frame information and data. - * - * @deprecated Use synchronous decoding mode. - */ -typedef struct { - /** - * The PTS of the frame. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - int64_t pts; - - /** - * The CoreVideo buffer that contains the decoded data. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - CVPixelBufferRef cv_buffer; - - /** - * A pointer to the next frame. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - struct vda_frame *next_frame; -} vda_frame; -#endif - /** * This structure is used to provide the necessary configurations and data * to the VDA FFmpeg HWAccel implementation. @@ -116,28 +79,6 @@ struct vda_context { */ int use_sync_decoding; -#if FF_API_VDA_ASYNC - /** - * VDA frames queue ordered by presentation timestamp. - * - * @deprecated Use synchronous decoding mode. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - vda_frame *queue; - - /** - * Mutex for locking queue operations. - * - * @deprecated Use synchronous decoding mode. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - pthread_mutex_t queue_mutex; -#endif - /** * The frame width. * @@ -203,22 +144,6 @@ int ff_vda_create_decoder(struct vda_context *vda_ctx, /** Destroy the video decoder. */ int ff_vda_destroy_decoder(struct vda_context *vda_ctx); -#if FF_API_VDA_ASYNC -/** - * Return the top frame of the queue. - * - * @deprecated Use synchronous decoding mode. - */ -vda_frame *ff_vda_queue_pop(struct vda_context *vda_ctx); - -/** - * Release the given frame. - * - * @deprecated Use synchronous decoding mode. - */ -void ff_vda_release_vda_frame(vda_frame *frame); -#endif - /** * @} */ diff --git a/libavcodec/vda_h264.c b/libavcodec/vda_h264.c index 23e2b51856..27a90b5cbe 100644 --- a/libavcodec/vda_h264.c +++ b/libavcodec/vda_h264.c @@ -28,100 +28,6 @@ #include "libavutil/avutil.h" #include "h264.h" -#if FF_API_VDA_ASYNC -#include <CoreFoundation/CFString.h> - -/* Helper to create a dictionary according to the given pts. */ -static CFDictionaryRef vda_dictionary_with_pts(int64_t i_pts) -{ - CFStringRef key = CFSTR("FF_VDA_DECODER_PTS_KEY"); - CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &i_pts); - CFDictionaryRef user_info = CFDictionaryCreate(kCFAllocatorDefault, - (const void **)&key, - (const void **)&value, - 1, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); - CFRelease(value); - return user_info; -} - -/* Helper to retrieve the pts from the given dictionary. */ -static int64_t vda_pts_from_dictionary(CFDictionaryRef user_info) -{ - CFNumberRef pts; - int64_t outValue = 0; - - if (!user_info) - return 0; - - pts = CFDictionaryGetValue(user_info, CFSTR("FF_VDA_DECODER_PTS_KEY")); - - if (pts) - CFNumberGetValue(pts, kCFNumberSInt64Type, &outValue); - - return outValue; -} - -/* Removes and releases all frames from the queue. */ -static void vda_clear_queue(struct vda_context *vda_ctx) -{ - vda_frame *top_frame; - - pthread_mutex_lock(&vda_ctx->queue_mutex); - - while (vda_ctx->queue) { - top_frame = vda_ctx->queue; - vda_ctx->queue = top_frame->next_frame; - ff_vda_release_vda_frame(top_frame); - } - - pthread_mutex_unlock(&vda_ctx->queue_mutex); -} - -static int vda_decoder_decode(struct vda_context *vda_ctx, - uint8_t *bitstream, - int bitstream_size, - int64_t frame_pts) -{ - OSStatus status; - CFDictionaryRef user_info; - CFDataRef coded_frame; - - coded_frame = CFDataCreate(kCFAllocatorDefault, bitstream, bitstream_size); - user_info = vda_dictionary_with_pts(frame_pts); - - status = VDADecoderDecode(vda_ctx->decoder, 0, coded_frame, user_info); - - CFRelease(user_info); - CFRelease(coded_frame); - - return status; -} - -vda_frame *ff_vda_queue_pop(struct vda_context *vda_ctx) -{ - vda_frame *top_frame; - - if (!vda_ctx->queue) - return NULL; - - pthread_mutex_lock(&vda_ctx->queue_mutex); - top_frame = vda_ctx->queue; - vda_ctx->queue = top_frame->next_frame; - pthread_mutex_unlock(&vda_ctx->queue_mutex); - - return top_frame; -} - -void ff_vda_release_vda_frame(vda_frame *frame) -{ - if (frame) { - CVPixelBufferRelease(frame->cv_buffer); - av_freep(&frame); - } -} -#endif /* Decoder callback that adds the vda frame to the queue in display order. */ static void vda_decoder_callback (void *vda_hw_ctx, @@ -282,10 +188,6 @@ int ff_vda_create_decoder(struct vda_context *vda_ctx, vda_ctx->priv_bitstream = NULL; vda_ctx->priv_allocated_size = 0; -#if FF_API_VDA_ASYNC - pthread_mutex_init(&vda_ctx->queue_mutex, NULL); -#endif - /* Each VCL NAL in the bitstream sent to the decoder * is preceded by a 4 bytes length header. * Change the avcC atom header if needed, to signal headers of 4 bytes. */ @@ -363,10 +265,6 @@ int ff_vda_destroy_decoder(struct vda_context *vda_ctx) if (vda_ctx->decoder) status = VDADecoderDestroy(vda_ctx->decoder); -#if FF_API_VDA_ASYNC - vda_clear_queue(vda_ctx); - pthread_mutex_destroy(&vda_ctx->queue_mutex); -#endif av_freep(&vda_ctx->priv_bitstream); return status; diff --git a/libavcodec/version.h b/libavcodec/version.h index ffa2aa23cc..ded4335fe9 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -73,9 +73,6 @@ #ifndef FF_API_CODEC_ID #define FF_API_CODEC_ID (LIBAVCODEC_VERSION_MAJOR < 56) #endif -#ifndef FF_API_VDA_ASYNC -#define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55) -#endif #ifndef FF_API_AVCODEC_RESAMPLE #define FF_API_AVCODEC_RESAMPLE (LIBAVCODEC_VERSION_MAJOR < 55) #endif |