vlc | branch: master | Thomas Guillem <[email protected]> | Thu May 11 18:19:25 2017 +0200| [2ea905f4ef25593127f0fe2913c7438b8cb4358c] | committer: Thomas Guillem
vt_utils: add cfdict utils > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2ea905f4ef25593127f0fe2913c7438b8cb4358c --- modules/codec/videotoolbox.m | 57 +++++++++++++------------------------------- modules/codec/vt_utils.c | 16 +++++++++++++ modules/codec/vt_utils.h | 4 ++++ 3 files changed, 37 insertions(+), 40 deletions(-) diff --git a/modules/codec/videotoolbox.m b/modules/codec/videotoolbox.m index c1d6a64a8e..ee18bd2c4d 100644 --- a/modules/codec/videotoolbox.m +++ b/modules/codec/videotoolbox.m @@ -94,7 +94,6 @@ static int DecodeBlock(decoder_t *, block_t *); static void Flush(decoder_t *); static void DecoderCallback(void *, void *, OSStatus, VTDecodeInfoFlags, CVPixelBufferRef, CMTime, CMTime); -void VTDictionarySetInt32(CFMutableDictionaryRef, CFStringRef, int); static void copy420YpCbCr8Planar(picture_t *, CVPixelBufferRef buffer, unsigned i_width, unsigned i_height); static BOOL deviceSupportsAdvancedProfiles(); @@ -599,10 +598,7 @@ static int StartVideoToolbox(decoder_t *p_dec) assert(p_sys->extradataInfo != nil); - p_sys->decoderConfiguration = - CFDictionaryCreateMutable(kCFAllocatorDefault, 2, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); + p_sys->decoderConfiguration = cfdict_create(2); if (p_sys->decoderConfiguration == NULL) return VLC_ENOMEM; @@ -618,10 +614,7 @@ static int StartVideoToolbox(decoder_t *p_dec) p_sys->extradataInfo); /* pixel aspect ratio */ - CFMutableDictionaryRef pixelaspectratio = - CFDictionaryCreateMutable(kCFAllocatorDefault, 2, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); + CFMutableDictionaryRef pixelaspectratio = cfdict_create(2); const unsigned i_video_width = p_dec->fmt_out.video.i_width; const unsigned i_video_height = p_dec->fmt_out.video.i_height; @@ -635,12 +628,12 @@ static int StartVideoToolbox(decoder_t *p_dec) } else date_Init( &p_sys->pts, 2 * 30000, 1001 ); - VTDictionarySetInt32(pixelaspectratio, - kCVImageBufferPixelAspectRatioHorizontalSpacingKey, - i_sar_num); - VTDictionarySetInt32(pixelaspectratio, - kCVImageBufferPixelAspectRatioVerticalSpacingKey, - i_sar_den); + cfdict_set_int32(pixelaspectratio, + kCVImageBufferPixelAspectRatioHorizontalSpacingKey, + i_sar_num); + cfdict_set_int32(pixelaspectratio, + kCVImageBufferPixelAspectRatioVerticalSpacingKey, + i_sar_den); CFDictionarySetValue(p_sys->decoderConfiguration, kCVImageBufferPixelAspectRatioKey, pixelaspectratio); @@ -681,10 +674,7 @@ static int StartVideoToolbox(decoder_t *p_dec) } /* destination pixel buffer attributes */ - p_sys->destinationPixelBufferAttributes = CFDictionaryCreateMutable(kCFAllocatorDefault, - 2, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); + p_sys->destinationPixelBufferAttributes = cfdict_create(2); #if !TARGET_OS_IPHONE CFDictionarySetValue(p_sys->destinationPixelBufferAttributes, @@ -696,15 +686,13 @@ static int StartVideoToolbox(decoder_t *p_dec) kCFBooleanTrue); #endif - VTDictionarySetInt32(p_sys->destinationPixelBufferAttributes, - kCVPixelBufferWidthKey, - i_video_width); - VTDictionarySetInt32(p_sys->destinationPixelBufferAttributes, - kCVPixelBufferHeightKey, - i_video_height); - VTDictionarySetInt32(p_sys->destinationPixelBufferAttributes, - kCVPixelBufferBytesPerRowAlignmentKey, - i_video_width * 2); + cfdict_set_int32(p_sys->destinationPixelBufferAttributes, + kCVPixelBufferWidthKey, i_video_width); + cfdict_set_int32(p_sys->destinationPixelBufferAttributes, + kCVPixelBufferHeightKey, i_video_height); + cfdict_set_int32(p_sys->destinationPixelBufferAttributes, + kCVPixelBufferBytesPerRowAlignmentKey, + i_video_width * 2); /* setup decoder callback record */ VTDecompressionOutputCallbackRecord decoderCallbackRecord; @@ -1081,10 +1069,7 @@ static int ExtradataInfoCreate(decoder_t *p_dec, CFStringRef name, void *p_data, { decoder_sys_t *p_sys = p_dec->p_sys; - p_sys->extradataInfo = - CFDictionaryCreateMutable(kCFAllocatorDefault, 1, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks); + p_sys->extradataInfo = cfdict_create(1); if (p_sys->extradataInfo == nil) return VLC_EGENERIC; @@ -1157,14 +1142,6 @@ static CMSampleBufferRef VTSampleBufferCreate(decoder_t *p_dec, return sample_buf; } -void VTDictionarySetInt32(CFMutableDictionaryRef dict, CFStringRef key, int value) -{ - CFNumberRef number; - number = CFNumberCreate(NULL, kCFNumberSInt32Type, &value); - CFDictionarySetValue(dict, key, number); - CFRelease(number); -} - static void copy420YpCbCr8Planar(picture_t *p_pic, CVPixelBufferRef buffer, unsigned i_width, diff --git a/modules/codec/vt_utils.c b/modules/codec/vt_utils.c index fc15780471..c2f8375d27 100644 --- a/modules/codec/vt_utils.c +++ b/modules/codec/vt_utils.c @@ -24,6 +24,22 @@ #include "vt_utils.h" +CFMutableDictionaryRef +cfdict_create(CFIndex capacity) +{ + return CFDictionaryCreateMutable(kCFAllocatorDefault, capacity, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks); +} + +void +cfdict_set_int32(CFMutableDictionaryRef dict, CFStringRef key, int value) +{ + CFNumberRef number = CFNumberCreate(NULL, kCFNumberSInt32Type, &value); + CFDictionarySetValue(dict, key, number); + CFRelease(number); +} + struct cvpxpic_ctx { void (*pf_destroy)(void *); /* must be first @ref picture_Release() */ diff --git a/modules/codec/vt_utils.h b/modules/codec/vt_utils.h index a338ff0aac..0c82031b92 100644 --- a/modules/codec/vt_utils.h +++ b/modules/codec/vt_utils.h @@ -24,6 +24,10 @@ #include <VideoToolbox/VideoToolbox.h> #include <vlc_picture.h> +CFMutableDictionaryRef cfdict_create(CFIndex capacity); + +void cfdict_set_int32(CFMutableDictionaryRef dict, CFStringRef key, int value); + /* * Attach a cvpx buffer to a picture * _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
