OSDN Git Service

Merge commit 'adfa53d67c7a3318157ea9d95e8bdcfb77139452'
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 13 Mar 2013 00:12:57 +0000 (01:12 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 13 Mar 2013 00:14:09 +0000 (01:14 +0100)
* 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>
1  2 
libavcodec/vda.h
libavcodec/vda_h264.c
libavcodec/version.h

  #include <VideoDecodeAcceleration/VDADecoder.h>
  #undef Picture
  
- #if FF_API_VDA_ASYNC
- #include <pthread.h>
- #endif
 +#include "libavcodec/version.h"
 +
  /**
   * @defgroup lavc_codec_hwaccel_vda VDA
   * @ingroup lavc_codec_hwaccel
   * @{
   */
  
- #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 Libav HWAccel implementation.
 + * to the VDA FFmpeg HWAccel implementation.
   *
   * The application must make it available as AVCodecContext.hwaccel_context.
   */
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
 +#include <CoreFoundation/CFDictionary.h>
  #include <CoreFoundation/CFNumber.h>
  #include <CoreFoundation/CFData.h>
 -#include <CoreFoundation/CFString.h>
  
 +#include "vda.h"
  #include "libavutil/avutil.h"
  #include "h264.h"
 -#include "vda.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,
 -                                 CFDictionaryRef user_info,
 -                                 OSStatus status,
 -                                 uint32_t infoFlags,
 -                                 CVImageBufferRef image_buffer)
 +
 +/* Decoder callback that adds the vda frame to the queue in display order. */
 +static void vda_decoder_callback (void *vda_hw_ctx,
 +                                  CFDictionaryRef user_info,
 +                                  OSStatus status,
 +                                  uint32_t infoFlags,
 +                                  CVImageBufferRef image_buffer)
  {
      struct vda_context *vda_ctx = vda_hw_ctx;
  
@@@ -279,14 -181,7 +185,10 @@@ int ff_vda_create_decoder(struct vda_co
      CFMutableDictionaryRef io_surface_properties;
      CFNumberRef cv_pix_fmt;
  
 -    /* Each VCL NAL in the bistream sent to the decoder
 +    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. */
      if (extradata_size >= 4 && (extradata[4] & 0x03) != 0x03) {
  #ifndef FF_API_REQUEST_CHANNELS
  #define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 56)
  #endif
- #ifndef FF_API_VDA_ASYNC
- #define FF_API_VDA_ASYNC         (LIBAVCODEC_VERSION_MAJOR < 55)
- #endif
 +#ifndef FF_API_ALLOC_CONTEXT
 +#define FF_API_ALLOC_CONTEXT    (LIBAVCODEC_VERSION_MAJOR < 55)
 +#endif
 +#ifndef FF_API_AVCODEC_OPEN
 +#define FF_API_AVCODEC_OPEN     (LIBAVCODEC_VERSION_MAJOR < 55)
 +#endif
 +#ifndef FF_API_OLD_DECODE_AUDIO
 +#define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_OLD_TIMECODE
 +#define FF_API_OLD_TIMECODE (LIBAVCODEC_VERSION_MAJOR < 55)
 +#endif
 +
 +#ifndef FF_API_OLD_ENCODE_AUDIO
 +#define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_OLD_ENCODE_VIDEO
 +#define FF_API_OLD_ENCODE_VIDEO (LIBAVCODEC_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_CODEC_ID
 +#define FF_API_CODEC_ID          (LIBAVCODEC_VERSION_MAJOR < 56)
 +#endif
  #ifndef FF_API_AVCODEC_RESAMPLE
  #define FF_API_AVCODEC_RESAMPLE  (LIBAVCODEC_VERSION_MAJOR < 55)
  #endif