Skip to content

Commit 388379f

Browse files
committed
A new OggExtractor/VorbisDecoder combo to support approximate seeking.
Change-Id: Id5d0c1c8b1adc62896bb5ed951f7b5cfda811e95 related-to-bug: 2654400
1 parent 75370e7 commit 388379f

File tree

17 files changed

+972
-372
lines changed

17 files changed

+972
-372
lines changed

include/media/stagefright/MediaDefs.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,12 @@ extern const char *MEDIA_MIMETYPE_AUDIO_AMR_WB;
3232
extern const char *MEDIA_MIMETYPE_AUDIO_MPEG;
3333
extern const char *MEDIA_MIMETYPE_AUDIO_AAC;
3434
extern const char *MEDIA_MIMETYPE_AUDIO_QCELP;
35+
extern const char *MEDIA_MIMETYPE_AUDIO_VORBIS;
3536
extern const char *MEDIA_MIMETYPE_AUDIO_RAW;
3637

3738
extern const char *MEDIA_MIMETYPE_CONTAINER_MPEG4;
3839
extern const char *MEDIA_MIMETYPE_CONTAINER_WAV;
39-
extern const char *MEDIA_MIMETYPE_CONTAINER_VORBIS;
40+
extern const char *MEDIA_MIMETYPE_CONTAINER_OGG;
4041

4142
} // namespace android
4243

include/media/stagefright/MetaData.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ enum {
3737
kKeyBitRate = 'brte', // int32_t (bps)
3838
kKeyESDS = 'esds', // raw data
3939
kKeyAVCC = 'avcc', // raw data
40+
kKeyVorbisInfo = 'vinf', // raw data
41+
kKeyVorbisBooks = 'vboo', // raw data
4042
kKeyWantsNALFragments = 'NALf',
4143
kKeyIsSyncFrame = 'sync', // int32_t (bool)
4244
kKeyIsCodecConfig = 'conf', // int32_t (bool)

include/media/stagefright/Utils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ uint16_t U16_AT(const uint8_t *ptr);
2929
uint32_t U32_AT(const uint8_t *ptr);
3030
uint64_t U64_AT(const uint8_t *ptr);
3131

32+
uint16_t U16LE_AT(const uint8_t *ptr);
33+
uint32_t U32LE_AT(const uint8_t *ptr);
34+
uint64_t U64LE_AT(const uint8_t *ptr);
35+
3236
uint64_t ntoh64(uint64_t x);
3337
uint64_t hton64(uint64_t x);
3438

media/libstagefright/Android.mk

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ LOCAL_SRC_FILES += \
3131
MPEG4Extractor.cpp \
3232
MPEG4Writer.cpp \
3333
MediaExtractor.cpp \
34+
OggExtractor.cpp \
3435
Prefetcher.cpp \
3536
SampleIterator.cpp \
3637
SampleTable.cpp \
@@ -39,7 +40,6 @@ LOCAL_SRC_FILES += \
3940
StagefrightMetadataRetriever.cpp \
4041
TimeSource.cpp \
4142
TimedEventQueue.cpp \
42-
VorbisExtractor.cpp \
4343
WAVExtractor.cpp \
4444
string.cpp
4545

@@ -50,7 +50,7 @@ LOCAL_C_INCLUDES:= \
5050
$(JNI_H_INCLUDE) \
5151
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \
5252
$(TOP)/external/opencore/android \
53-
$(TOP)/external/tremolo/Tremolo
53+
$(TOP)/external/tremolo
5454

5555
LOCAL_SHARED_LIBRARIES := \
5656
libbinder \
@@ -70,7 +70,8 @@ LOCAL_STATIC_LIBRARIES := \
7070
libstagefright_amrwbdec \
7171
libstagefright_avcdec \
7272
libstagefright_m4vh263dec \
73-
libstagefright_mp3dec
73+
libstagefright_mp3dec \
74+
libstagefright_vorbisdec
7475

7576
LOCAL_SHARED_LIBRARIES += \
7677
libstagefright_amrnb_common \

media/libstagefright/DataSource.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include "include/MP3Extractor.h"
1919
#include "include/MPEG4Extractor.h"
2020
#include "include/WAVExtractor.h"
21-
#include "include/VorbisExtractor.h"
21+
#include "include/OggExtractor.h"
2222

2323
#include <media/stagefright/CachingDataSource.h>
2424
#include <media/stagefright/DataSource.h>
@@ -93,7 +93,7 @@ void DataSource::RegisterDefaultSniffers() {
9393
RegisterSniffer(SniffMPEG4);
9494
RegisterSniffer(SniffAMR);
9595
RegisterSniffer(SniffWAV);
96-
RegisterSniffer(SniffVorbis);
96+
RegisterSniffer(SniffOgg);
9797
}
9898

9999
// static

media/libstagefright/MediaDefs.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ const char *MEDIA_MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
3030
const char *MEDIA_MIMETYPE_AUDIO_MPEG = "audio/mpeg";
3131
const char *MEDIA_MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
3232
const char *MEDIA_MIMETYPE_AUDIO_QCELP = "audio/qcelp";
33+
const char *MEDIA_MIMETYPE_AUDIO_VORBIS = "audio/vorbis";
3334
const char *MEDIA_MIMETYPE_AUDIO_RAW = "audio/raw";
3435

3536
const char *MEDIA_MIMETYPE_CONTAINER_MPEG4 = "video/mpeg4";
3637
const char *MEDIA_MIMETYPE_CONTAINER_WAV = "audio/wav";
37-
const char *MEDIA_MIMETYPE_CONTAINER_VORBIS = "application/ogg";
38+
const char *MEDIA_MIMETYPE_CONTAINER_OGG = "application/ogg";
3839

3940
} // namespace android

media/libstagefright/MediaExtractor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include "include/MP3Extractor.h"
2323
#include "include/MPEG4Extractor.h"
2424
#include "include/WAVExtractor.h"
25-
#include "include/VorbisExtractor.h"
25+
#include "include/OggExtractor.h"
2626

2727
#include <media/stagefright/DataSource.h>
2828
#include <media/stagefright/MediaDefs.h>
@@ -67,8 +67,8 @@ sp<MediaExtractor> MediaExtractor::Create(
6767
return new AMRExtractor(source);
6868
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_WAV)) {
6969
return new WAVExtractor(source);
70-
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_VORBIS)) {
71-
return new VorbisExtractor(source);
70+
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_OGG)) {
71+
return new OggExtractor(source);
7272
}
7373

7474
return NULL;

media/libstagefright/OMXCodec.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "include/AVCDecoder.h"
2626
#include "include/M4vH263Decoder.h"
2727
#include "include/MP3Decoder.h"
28+
#include "include/VorbisDecoder.h"
2829

2930
#include "include/ESDS.h"
3031

@@ -67,6 +68,7 @@ FACTORY_CREATE(AMRWBDecoder)
6768
FACTORY_CREATE(AACDecoder)
6869
FACTORY_CREATE(AVCDecoder)
6970
FACTORY_CREATE(M4vH263Decoder)
71+
FACTORY_CREATE(VorbisDecoder)
7072
FACTORY_CREATE(AMRNBEncoder)
7173

7274
static sp<MediaSource> InstantiateSoftwareCodec(
@@ -83,6 +85,7 @@ static sp<MediaSource> InstantiateSoftwareCodec(
8385
FACTORY_REF(AACDecoder)
8486
FACTORY_REF(AVCDecoder)
8587
FACTORY_REF(M4vH263Decoder)
88+
FACTORY_REF(VorbisDecoder)
8689
FACTORY_REF(AMRNBEncoder)
8790
};
8891
for (size_t i = 0;
@@ -123,6 +126,7 @@ static const CodecInfo kDecoderInfo[] = {
123126
{ MEDIA_MIMETYPE_VIDEO_AVC, "OMX.TI.Video.Decoder" },
124127
{ MEDIA_MIMETYPE_VIDEO_AVC, "AVCDecoder" },
125128
// { MEDIA_MIMETYPE_VIDEO_AVC, "OMX.PV.avcdec" },
129+
{ MEDIA_MIMETYPE_AUDIO_VORBIS, "VorbisDecoder" },
126130
};
127131

128132
static const CodecInfo kEncoderInfo[] = {

0 commit comments

Comments
 (0)