diff options
| author | Andreas Huber <andih@google.com> | 2010-05-04 14:30:34 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2010-05-04 14:30:34 -0700 |
| commit | ce0bd71735532f53014cc299f684302f357c471a (patch) | |
| tree | 740a35865bd0697f3701d28e6d35237875d9a293 /media/libmediaplayerservice/MediaPlayerService.cpp | |
| parent | ebad36db56017000ce8b1eb813537d90248e3ad0 (diff) | |
| parent | 8ea45aad100ee25067b2e83703454c71a968ba4f (diff) | |
| download | frameworks_base-ce0bd71735532f53014cc299f684302f357c471a.zip frameworks_base-ce0bd71735532f53014cc299f684302f357c471a.tar.gz frameworks_base-ce0bd71735532f53014cc299f684302f357c471a.tar.bz2 | |
am 8ea45aad: am e083d0a2: Merge "Support for Ogg Vorbis decoding in stagefright." into froyo
Merge commit '8ea45aad100ee25067b2e83703454c71a968ba4f' into kraken
* commit '8ea45aad100ee25067b2e83703454c71a968ba4f':
Support for Ogg Vorbis decoding in stagefright.
Diffstat (limited to 'media/libmediaplayerservice/MediaPlayerService.cpp')
| -rw-r--r-- | media/libmediaplayerservice/MediaPlayerService.cpp | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index d2e9e83..3100f6e 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -674,6 +674,26 @@ static player_type getDefaultPlayerType() { return PV_PLAYER; } +// By default we use the VORBIS_PLAYER for vorbis playback (duh!), +// but if the magic property is set we will use our new experimental +// stagefright code instead. +static player_type OverrideStagefrightForVorbis(player_type player) { + if (player != VORBIS_PLAYER) { + return player; + } + +#if BUILD_WITH_FULL_STAGEFRIGHT + char value[PROPERTY_VALUE_MAX]; + if (property_get("media.stagefright.enable-vorbis", value, NULL) + && (!strcmp(value, "1") || !strcmp(value, "true"))) { + return STAGEFRIGHT_PLAYER; + } +#endif + + return VORBIS_PLAYER; +} + + player_type getPlayerType(int fd, int64_t offset, int64_t length) { char buf[20]; @@ -685,7 +705,7 @@ player_type getPlayerType(int fd, int64_t offset, int64_t length) // Ogg vorbis? if (ident == 0x5367674f) // 'OggS' - return VORBIS_PLAYER; + return OverrideStagefrightForVorbis(VORBIS_PLAYER); #ifndef NO_OPENCORE if (ident == 0x75b22630) { @@ -721,6 +741,13 @@ player_type getPlayerType(const char* url) return TEST_PLAYER; } + bool useStagefrightForHTTP = false; + char value[PROPERTY_VALUE_MAX]; + if (property_get("media.stagefright.enable-http", value, NULL) + && (!strcmp(value, "1") || !strcasecmp(value, "true"))) { + useStagefrightForHTTP = true; + } + // use MidiFile for MIDI extensions int lenURL = strlen(url); for (int i = 0; i < NELEM(FILE_EXTS); ++i) { @@ -728,17 +755,18 @@ player_type getPlayerType(const char* url) int start = lenURL - len; if (start > 0) { if (!strncmp(url + start, FILE_EXTS[i].extension, len)) { - return FILE_EXTS[i].playertype; + if (FILE_EXTS[i].playertype == VORBIS_PLAYER + && !strncasecmp(url, "http://", 7) + && useStagefrightForHTTP) { + return STAGEFRIGHT_PLAYER; + } + return OverrideStagefrightForVorbis(FILE_EXTS[i].playertype); } } } if (!strncasecmp(url, "http://", 7)) { - char value[PROPERTY_VALUE_MAX]; - if (!property_get("media.stagefright.enable-http", value, NULL) - || (strcmp(value, "1") && strcasecmp(value, "true"))) { - // For now, we're going to use PV for http-based playback - // by default until we can clear up a few more issues. + if (!useStagefrightForHTTP) { return PV_PLAYER; } } |
