Loading media/module/extractors/extractor.aconfig +9 −0 Original line number Diff line number Diff line Loading @@ -12,3 +12,12 @@ flag { description: "Enable SniffMidi optimizations." bug: "359920208" } flag { name: "extractor_mp4_enable_apv" is_exported: true is_fixed_read_only: true namespace: "media_solutions" description: "Enable APV support in mp4 extractor." bug: "370061501" } media/module/extractors/fuzzers/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -129,12 +129,18 @@ cc_fuzz { ], static_libs: [ "android.media.extractor.flags-aconfig-cc", "libaconfig_storage_read_api_cc", "libstagefright_id3", "libstagefright_esds", "libmp4extractor", "libstagefright_metadatautils", ], shared_libs: [ "server_configurable_flags", ], dictionary: "mp4_extractor_fuzzer.dict", corpus: ["corpus_mp4/*"], Loading media/module/extractors/mp4/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -42,12 +42,18 @@ cc_library { ], static_libs: [ "android.media.extractor.flags-aconfig-cc", "libaconfig_storage_read_api_cc", "libstagefright_esds", "libstagefright_foundation", "libstagefright_id3", "libutils", ], shared_libs: [ "server_configurable_flags", ], host_supported: true, target: { Loading media/module/extractors/mp4/MPEG4Extractor.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include "SampleTable.h" #include "ItemTable.h" #include <com_android_media_extractor_flags.h> #include <media/esds/ESDS.h> #include <ID3.h> #include <media/stagefright/DataSourceBase.h> Loading Loading @@ -147,6 +148,7 @@ private: bool mIsAVC; bool mIsHEVC; bool mIsAPV; bool mIsDolbyVision; bool mIsAC4; bool mIsMpegH = false; Loading Loading @@ -366,6 +368,13 @@ static const char *FourCC2MIME(uint32_t fourcc) { case FOURCC("hev1"): return MEDIA_MIMETYPE_VIDEO_HEVC; case FOURCC("apv1"): if (!com::android::media::extractor::flags::extractor_mp4_enable_apv()) { ALOGV("APV support not enabled"); return "application/octet-stream"; } return MEDIA_MIMETYPE_VIDEO_APV; case FOURCC("dvav"): case FOURCC("dva1"): case FOURCC("dvhe"): Loading Loading @@ -2106,6 +2115,7 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { case FOURCC("dav1"): case FOURCC("av01"): case FOURCC("vp09"): case FOURCC("apv1"): { uint8_t buffer[78]; if (chunk_data_size < (ssize_t)sizeof(buffer)) { Loading Loading @@ -2623,8 +2633,16 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { break; } case FOURCC("apvC"): case FOURCC("av1C"): { if (!com::android::media::extractor::flags::extractor_mp4_enable_apv() && chunk_type == FOURCC("apvC")) { ALOGV("APV support not enabled"); *offset += chunk_size; break; } auto buffer = heapbuffer<uint8_t>(chunk_data_size); if (buffer.get() == NULL) { Loading Loading @@ -5145,6 +5163,7 @@ MPEG4Source::MPEG4Source( mCurrentSampleInfoOffsets(NULL), mIsAVC(false), mIsHEVC(false), mIsAPV(false), mIsDolbyVision(false), mIsAC4(false), mIsPcm(false), Loading Loading @@ -5187,6 +5206,8 @@ MPEG4Source::MPEG4Source( mIsAVC = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_AVC); mIsHEVC = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_HEVC) || !strcasecmp(mime, MEDIA_MIMETYPE_IMAGE_ANDROID_HEIC); mIsAPV = com::android::media::extractor::flags::extractor_mp4_enable_apv() && !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_APV); mIsAC4 = !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AC4); mIsDolbyVision = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_DOLBY_VISION); mIsHeif = !strcasecmp(mime, MEDIA_MIMETYPE_IMAGE_ANDROID_HEIC) && mItemTable != NULL; Loading media/module/extractors/tests/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ package { // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_av_license"], default_team: "trendy_team_android_media_solutions_playback", } cc_test { Loading @@ -31,6 +32,8 @@ cc_test { srcs: ["ExtractorUnitTest.cpp"], static_libs: [ "android.media.extractor.flags-aconfig-cc", "libaconfig_storage_read_api_cc", "libaacextractor", "libamrextractor", "libmp3extractor", Loading Loading @@ -77,6 +80,7 @@ cc_test { "libhidlmemory", "libhidlbase", "libbase", "server_configurable_flags", ], compile_multilib: "first", Loading Loading
media/module/extractors/extractor.aconfig +9 −0 Original line number Diff line number Diff line Loading @@ -12,3 +12,12 @@ flag { description: "Enable SniffMidi optimizations." bug: "359920208" } flag { name: "extractor_mp4_enable_apv" is_exported: true is_fixed_read_only: true namespace: "media_solutions" description: "Enable APV support in mp4 extractor." bug: "370061501" }
media/module/extractors/fuzzers/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -129,12 +129,18 @@ cc_fuzz { ], static_libs: [ "android.media.extractor.flags-aconfig-cc", "libaconfig_storage_read_api_cc", "libstagefright_id3", "libstagefright_esds", "libmp4extractor", "libstagefright_metadatautils", ], shared_libs: [ "server_configurable_flags", ], dictionary: "mp4_extractor_fuzzer.dict", corpus: ["corpus_mp4/*"], Loading
media/module/extractors/mp4/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -42,12 +42,18 @@ cc_library { ], static_libs: [ "android.media.extractor.flags-aconfig-cc", "libaconfig_storage_read_api_cc", "libstagefright_esds", "libstagefright_foundation", "libstagefright_id3", "libutils", ], shared_libs: [ "server_configurable_flags", ], host_supported: true, target: { Loading
media/module/extractors/mp4/MPEG4Extractor.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include "SampleTable.h" #include "ItemTable.h" #include <com_android_media_extractor_flags.h> #include <media/esds/ESDS.h> #include <ID3.h> #include <media/stagefright/DataSourceBase.h> Loading Loading @@ -147,6 +148,7 @@ private: bool mIsAVC; bool mIsHEVC; bool mIsAPV; bool mIsDolbyVision; bool mIsAC4; bool mIsMpegH = false; Loading Loading @@ -366,6 +368,13 @@ static const char *FourCC2MIME(uint32_t fourcc) { case FOURCC("hev1"): return MEDIA_MIMETYPE_VIDEO_HEVC; case FOURCC("apv1"): if (!com::android::media::extractor::flags::extractor_mp4_enable_apv()) { ALOGV("APV support not enabled"); return "application/octet-stream"; } return MEDIA_MIMETYPE_VIDEO_APV; case FOURCC("dvav"): case FOURCC("dva1"): case FOURCC("dvhe"): Loading Loading @@ -2106,6 +2115,7 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { case FOURCC("dav1"): case FOURCC("av01"): case FOURCC("vp09"): case FOURCC("apv1"): { uint8_t buffer[78]; if (chunk_data_size < (ssize_t)sizeof(buffer)) { Loading Loading @@ -2623,8 +2633,16 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { break; } case FOURCC("apvC"): case FOURCC("av1C"): { if (!com::android::media::extractor::flags::extractor_mp4_enable_apv() && chunk_type == FOURCC("apvC")) { ALOGV("APV support not enabled"); *offset += chunk_size; break; } auto buffer = heapbuffer<uint8_t>(chunk_data_size); if (buffer.get() == NULL) { Loading Loading @@ -5145,6 +5163,7 @@ MPEG4Source::MPEG4Source( mCurrentSampleInfoOffsets(NULL), mIsAVC(false), mIsHEVC(false), mIsAPV(false), mIsDolbyVision(false), mIsAC4(false), mIsPcm(false), Loading Loading @@ -5187,6 +5206,8 @@ MPEG4Source::MPEG4Source( mIsAVC = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_AVC); mIsHEVC = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_HEVC) || !strcasecmp(mime, MEDIA_MIMETYPE_IMAGE_ANDROID_HEIC); mIsAPV = com::android::media::extractor::flags::extractor_mp4_enable_apv() && !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_APV); mIsAC4 = !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AC4); mIsDolbyVision = !strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_DOLBY_VISION); mIsHeif = !strcasecmp(mime, MEDIA_MIMETYPE_IMAGE_ANDROID_HEIC) && mItemTable != NULL; Loading
media/module/extractors/tests/Android.bp +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ package { // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_av_license"], default_team: "trendy_team_android_media_solutions_playback", } cc_test { Loading @@ -31,6 +32,8 @@ cc_test { srcs: ["ExtractorUnitTest.cpp"], static_libs: [ "android.media.extractor.flags-aconfig-cc", "libaconfig_storage_read_api_cc", "libaacextractor", "libamrextractor", "libmp3extractor", Loading Loading @@ -77,6 +80,7 @@ cc_test { "libhidlmemory", "libhidlbase", "libbase", "server_configurable_flags", ], compile_multilib: "first", Loading