From: Sejun Park Date: Fri, 31 Mar 2017 05:11:59 +0000 (+0900) Subject: Added new audio/video enums X-Git-Tag: submit/tizen/20170421.070846^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=26e272984ea061459ae6dcb5bb9bcac3af82b095;p=platform%2Fcore%2Fapi%2Fmediatool.git Added new audio/video enums Change-Id: Ic6b88b0942b3a17171f9c2f5f9d69c936e0212c1 --- diff --git a/include/media_format.h b/include/media_format.h index 09384ef..9928841 100755 --- a/include/media_format.h +++ b/include/media_format.h @@ -93,12 +93,16 @@ typedef enum { MEDIA_FORMAT_AAC_HE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x1061), /**< media format mime type is AAC_HE, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_AAC_HE_PS = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x1062), /**< media format mime type is AAC_HE_PS, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_MP3 = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x1070), /**< media format mime type is MP3, AUDIO*/ + MEDIA_FORMAT_MP2 = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x1071), /**< media format mime type is MP23, AUDIO, (Since 4.0) */ MEDIA_FORMAT_VORBIS = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x1080), /**< media format mime type is VORBIS, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_FLAC = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x1090), /**< media format mime type is FLAC, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_WMAV1 = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10A0), /**< media format mime type is WMAV1, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_WMAV2 = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10A1), /**< media format mime type is WMAV2, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_WMAPRO = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10A2), /**< media format mime type is WMAVPRO, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_WMALSL = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10A3), /**< media format mime type is WMAVLSL, AUDIO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ + MEDIA_FORMAT_AC3 = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10B1), /**< media format mime type is AC3, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_EAC3 = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10B2), /**< media format mime type is EAC3, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_DTS = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_ENCODED | 0x10C1), /**< media format mime type is DTS, AUDIO, (Since 4.0) */ MEDIA_FORMAT_PCM = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1510), /**< media format mime type is PCM, AUDIO, indicates MEDIA_FORMAT_PCM_S16LE (Since 3.0) */ MEDIA_FORMAT_PCM_S16LE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1510), /**< media format mime type is PCM signed 16-bit little-endian, AUDIO, (Since 3.0) */ @@ -109,6 +113,12 @@ typedef enum { MEDIA_FORMAT_PCM_S32BE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1515), /**< media format mime type is PCM signed 32-bit big-endian, AUDIO, (Since 3.0) */ MEDIA_FORMAT_PCM_F32LE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1516), /**< media format mime type is PCM 32-bit floating point little-endian, AUDIO, (Since 3.0) */ MEDIA_FORMAT_PCM_F32BE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1517), /**< media format mime type is PCM 32-bit floating point big-endian, AUDIO, (Since 3.0) */ + MEDIA_FORMAT_PCM_U16LE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1518), /**< media format mime type is PCM unsigned 16-bit little-endian, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_PCM_U24LE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1519), /**< media format mime type is PCM unsigned 24-bit little-endian, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_PCM_U32LE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x151A), /**< media format mime type is PCM unsigned 32-bit little-endian, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_PCM_U16BE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x151B), /**< media format mime type is PCM unsigned 16-bit big-endian, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_PCM_U24BE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x151C), /**< media format mime type is PCM unsigned 24-bit big-endian, AUDIO, (Since 4.0) */ + MEDIA_FORMAT_PCM_U32BE = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x151D), /**< media format mime type is PCM unsigned 32-bit big-endian, AUDIO, (Since 4.0) */ MEDIA_FORMAT_PCMA = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1520), /**< media format mime type is PCM A-law, AUDIO */ MEDIA_FORMAT_PCMU = (MEDIA_FORMAT_AUDIO | MEDIA_FORMAT_RAW | 0x1530), /**< media format mime type is PCM U-law, AUDIO */ @@ -146,6 +156,9 @@ typedef enum { MEDIA_FORMAT_VP8 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_ENCODED | 0x2090), /**< media format mime type is VP8, VIDEO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_VP9 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_ENCODED | 0x20A0), /**< media format mime type is VP9, VIDEO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ MEDIA_FORMAT_VC1 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_ENCODED | 0x20B0), /**< media format mime type is VC1, VIDEO, (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ + MEDIA_FORMAT_DIVX4 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_ENCODED | 0x20C4), /**< media format mime type is DIVX4, VIDEO, (Since 4.0) */ + MEDIA_FORMAT_DIVX5 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_ENCODED | 0x20C5), /**< media format mime type is DIVX5, VIDEO, (Since 4.0) */ + MEDIA_FORMAT_XVID = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_ENCODED | 0x20d0), /**< media format mime type is XVID, VIDEO, (Since 4.0) */ MEDIA_FORMAT_I420 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_RAW | 0x2510), /**< media format mime type is I420, VIDEO */ MEDIA_FORMAT_NV12 = (MEDIA_FORMAT_VIDEO | MEDIA_FORMAT_RAW | 0x2520), /**< media format mime type is NV12, VIDEO */ @@ -689,6 +702,35 @@ int media_format_is_writable(media_format_h fmt, bool * is_writable); */ int media_format_make_writable(media_format_h fmt, media_format_h * out_fmt); +/** + * @brief Sets extra data of media format. + * @details The user can sets data that media format does not support. + * @since_tizen 4.0 + * @param[in] fmt The media format handle + * @param[in] extra The extra data to set + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #MEDIA_FORMAT_ERROR_NONE Successful + * @retval #MEDIA_FORMAT_ERROR_INVALID_PARAMETER Invalid parameter + * @see media_format_get_extra() + */ +int media_format_set_extra(media_format_h fmt, void *extra); + +/** + * @brief Gets extra data of media format. + * @details The user can get extra data which user sets value via media_format_set_extra(). + * @since_tizen 4.0 + * @param[in] fmt The media format handle + * @param[out] extra The extra data to get + * + * @return @c 0 on success, + * otherwise a negative error value + * @retval #MEDIA_FORMAT_ERROR_NONE Successful + * @retval #MEDIA_FORMAT_ERROR_INVALID_PARAMETER Invalid parameter + * @see media_format_set_extra() + */ +int media_format_get_extra(media_format_h fmt, void **extra); /** * @} */ diff --git a/include/media_format_private.h b/include/media_format_private.h index 26aa03d..0d64f7c 100755 --- a/include/media_format_private.h +++ b/include/media_format_private.h @@ -173,6 +173,7 @@ typedef struct _media_format_s { int ref_count; /**< media format struct reference count */ media_format_mimetype_e mimetype; /**< media format struct mimetype of media_format_mimetype_e */ + void *extradata; union { media_format_audio_spec_s audio; /**< media format struct audio of media_format_audio_spec_s */ media_format_video_spec_s video; /**< media format struct video of media_format_video_spec_s */ diff --git a/src/media_format.c b/src/media_format.c index 71bc5ea..1a4ff5c 100755 --- a/src/media_format.c +++ b/src/media_format.c @@ -695,3 +695,28 @@ int media_format_make_writable(media_format_h fmt, media_format_h *out_fmt) return ret; } + +int media_format_set_extra(media_format_h fmt, void *extra) +{ + MEDIA_FORMAT_INSTANCE_CHECK(fmt); + + media_format_s *fmt_handle; + fmt_handle = (media_format_s *)fmt; + + fmt_handle->extradata = extra; + + return MEDIA_FORMAT_ERROR_NONE; +} + +int media_format_get_extra(media_format_h fmt, void **extra) +{ + MEDIA_FORMAT_INSTANCE_CHECK(fmt); + + media_format_s *fmt_handle; + fmt_handle = (media_format_s *)fmt; + + if (extra) + *extra = fmt_handle->extradata; + + return MEDIA_FORMAT_ERROR_NONE; +} diff --git a/src/media_packet.c b/src/media_packet.c index afef88e..b5a6a6f 100755 --- a/src/media_packet.c +++ b/src/media_packet.c @@ -445,6 +445,9 @@ static size_t _pkt_calculate_video_buffer_size(media_packet_s *pkt) case MEDIA_FORMAT_MPEG2_HP: case MEDIA_FORMAT_MPEG4_SP: case MEDIA_FORMAT_MPEG4_ASP: + case MEDIA_FORMAT_DIVX4: + case MEDIA_FORMAT_DIVX5: + case MEDIA_FORMAT_XVID: stride = _ROUND_UP_16(width); buffersize = (stride + (_ROUND_UP_16(width) / 2)) * height; break; @@ -473,11 +476,17 @@ static size_t _pkt_calculate_video_buffer_size(media_packet_s *pkt) #define OGG_MAX_FRM_SIZE (2048) /* FIXME - Need */ #define FLAC_MAX_FRM_SIZE (4096) /* FIXME - Need */ #define WMA_MAX_FRM_SIZE (2048) /* FIXME - Need */ +#define DTS_MAX_FRM_SIZE (2048) /* FIXME - Need */ +#define AC3_MAX_FRM_SIZE (2048) /* FIXME - Need */ +#define EAC3_MAX_FRM_SIZE (4096) /* FIXME - Need */ #define PCM_MAX_NCH (2) #define MPEG_MIN_NCH (2) #define AMR_MAX_NCH (1) #define WMA_MAX_NCH (2) +#define DTS_MAX_NCH (2) +#define AC3_MAX_NCH (2) +#define EAC3_MAX_NCH (2) static size_t _pkt_calculate_audio_buffer_size(media_packet_s *pkt) { @@ -491,12 +500,24 @@ static size_t _pkt_calculate_audio_buffer_size(media_packet_s *pkt) } switch (pkt->format->mimetype) { - case MEDIA_FORMAT_PCM: + case MEDIA_FORMAT_PCM_S16LE: + case MEDIA_FORMAT_PCM_S24LE: + case MEDIA_FORMAT_PCM_S32LE: + case MEDIA_FORMAT_PCM_S16BE: + case MEDIA_FORMAT_PCM_S24BE: + case MEDIA_FORMAT_PCM_S32BE: + case MEDIA_FORMAT_PCM_U16LE: + case MEDIA_FORMAT_PCM_U24LE: + case MEDIA_FORMAT_PCM_U32LE: + case MEDIA_FORMAT_PCM_U16BE: + case MEDIA_FORMAT_PCM_U24BE: + case MEDIA_FORMAT_PCM_U32BE: buffersize = (PCM_MAX_FRM_SIZE * PCM_MAX_NCH) * (size_t)(bit / 8); break; case MEDIA_FORMAT_AAC_LC: case MEDIA_FORMAT_AAC_HE: case MEDIA_FORMAT_AAC_HE_PS: + case MEDIA_FORMAT_MP2: case MEDIA_FORMAT_MP3: buffersize = (MPEG_MAX_FRM_SIZE * MPEG_MIN_NCH) * 2; /* 2 = (16bit/8) */ break; @@ -517,6 +538,15 @@ static size_t _pkt_calculate_audio_buffer_size(media_packet_s *pkt) case MEDIA_FORMAT_WMALSL: buffersize = (WMA_MAX_FRM_SIZE * WMA_MAX_NCH) * 2; /* 2 = (16bit/8) */ break; + case MEDIA_FORMAT_DTS: + buffersize = (DTS_MAX_FRM_SIZE * DTS_MAX_NCH) * 2; /* 2 = (16bit/8) */ + break; + case MEDIA_FORMAT_AC3: + buffersize = (AC3_MAX_FRM_SIZE * AC3_MAX_NCH) * 2; /* 2 = (16bit/8) */ + break; + case MEDIA_FORMAT_EAC3: + buffersize = (EAC3_MAX_FRM_SIZE * EAC3_MAX_NCH) * 2; /* 2 = (16bit/8) */ + break; default: LOGE("Not supported format\n"); return 0; diff --git a/test/media_packet_test.c b/test/media_packet_test.c index 369880f..249dc6f 100755 --- a/test/media_packet_test.c +++ b/test/media_packet_test.c @@ -94,7 +94,7 @@ static void _media_format_set_video_mime(int num) if (num == 0) { ret = media_format_set_video_mime(g_media_format[media_format_idx], MEDIA_FORMAT_H264_HP); } else if (num == 1) { - ret = media_format_set_video_mime(g_media_format[media_format_idx], MEDIA_FORMAT_RGB888); + ret = media_format_set_video_mime(g_media_format[media_format_idx], MEDIA_FORMAT_RGBA); } else if (num == 2) { ret = media_format_set_video_mime(g_media_format[media_format_idx], MEDIA_FORMAT_I420); } else {