diff options
author | Glenn Kasten <gkasten@google.com> | 2011-02-21 09:37:13 -0800 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2011-02-28 08:39:13 -0800 |
commit | 5f63069f3256f8ba253d1331c5bef0d162d2bd67 (patch) | |
tree | a7ad19e4abf94c18d18f6bc11b81a99b8b9b9991 /media/libstagefright/MediaExtractor.cpp | |
parent | d2e91d1dc7c9fcbf792cbc21d283a5915b32cb54 (diff) | |
download | frameworks_base-5f63069f3256f8ba253d1331c5bef0d162d2bd67.zip frameworks_base-5f63069f3256f8ba253d1331c5bef0d162d2bd67.tar.gz frameworks_base-5f63069f3256f8ba253d1331c5bef0d162d2bd67.tar.bz2 |
Bug 3447027 Limit previews for DRM video
Change-Id: I5b15cf6a15623cf73f007c59143ab5e3fa5a07e8
Diffstat (limited to 'media/libstagefright/MediaExtractor.cpp')
-rw-r--r-- | media/libstagefright/MediaExtractor.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp index d4651c4..23bad5b 100644 --- a/media/libstagefright/MediaExtractor.cpp +++ b/media/libstagefright/MediaExtractor.cpp @@ -67,6 +67,7 @@ sp<MediaExtractor> MediaExtractor::Create( mime, confidence); } + bool isDrm = false; // DRM MIME type syntax is "drm+type+original" where // type is "es_based" or "container_based" and // original is the content's cleartext MIME type @@ -78,39 +79,45 @@ sp<MediaExtractor> MediaExtractor::Create( } ++originalMime; if (!strncmp(mime, "drm+es_based+", 13)) { + // DRMExtractor sets container metadata kKeyIsDRM to 1 return new DRMExtractor(source, originalMime); } else if (!strncmp(mime, "drm+container_based+", 20)) { mime = originalMime; + isDrm = true; } else { return NULL; } } + MediaExtractor *ret = NULL; if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4) || !strcasecmp(mime, "audio/mp4")) { - return new MPEG4Extractor(source); + ret = new MPEG4Extractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) { - return new MP3Extractor(source, meta); + ret = new MP3Extractor(source, meta); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_NB) || !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB)) { - return new AMRExtractor(source); + ret = new AMRExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_FLAC)) { - return new FLACExtractor(source); + ret = new FLACExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_WAV)) { - return new WAVExtractor(source); + ret = new WAVExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_OGG)) { - return new OggExtractor(source); + ret = new OggExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MATROSKA)) { - return new MatroskaExtractor(source); + ret = new MatroskaExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG2TS)) { - return new MPEG2TSExtractor(source); + ret = new MPEG2TSExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_WVM)) { - return new WVMExtractor(source); + ret = new WVMExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AAC_ADTS)) { - return new AACExtractor(source); + ret = new AACExtractor(source); + } + if (ret != NULL && isDrm) { + ret->getMetaData()->setInt32(kKeyIsDRM, 1); } - return NULL; + return ret; } } // namespace android |