OSDN Git Service
(root)
/
android-x86
/
external-stagefright-plugins.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a267ff8
)
add support for wmv1
author
Michael Chen
<omxcodec@gmail.com>
Tue, 13 Nov 2012 14:52:29 +0000
(22:52 +0800)
committer
Michael Chen
<omxcodec@gmail.com>
Tue, 13 Nov 2012 14:52:29 +0000
(22:52 +0800)
libstagefright/FFmpegExtractor/FFmpegExtractor.cpp
patch
|
blob
|
history
libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.cpp
patch
|
blob
|
history
libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.h
patch
|
blob
|
history
libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.cpp
patch
|
blob
|
history
libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.h
patch
|
blob
|
history
diff --git
a/libstagefright/FFmpegExtractor/FFmpegExtractor.cpp
b/libstagefright/FFmpegExtractor/FFmpegExtractor.cpp
index
1031d12
..
7a060ca
100644
(file)
--- a/
libstagefright/FFmpegExtractor/FFmpegExtractor.cpp
+++ b/
libstagefright/FFmpegExtractor/FFmpegExtractor.cpp
@@
-420,7
+420,8
@@
int FFmpegExtractor::check_extradata(AVCodecContext *avctx)
avctx->codec_id == CODEC_ID_AC3 ||
avctx->codec_id == CODEC_ID_H263 ||
avctx->codec_id == CODEC_ID_H263P ||
avctx->codec_id == CODEC_ID_AC3 ||
avctx->codec_id == CODEC_ID_H263 ||
avctx->codec_id == CODEC_ID_H263P ||
- avctx->codec_id == CODEC_ID_H263I)
+ avctx->codec_id == CODEC_ID_H263I ||
+ avctx->codec_id == CODEC_ID_WMV1)
return 1;
// is extradata compatible with android?
return 1;
// is extradata compatible with android?
@@
-491,6
+492,7
@@
int FFmpegExtractor::stream_component_open(int stream_index)
case CODEC_ID_MP2:
case CODEC_ID_MP3:
case CODEC_ID_MPEG2VIDEO:
case CODEC_ID_MP2:
case CODEC_ID_MP3:
case CODEC_ID_MPEG2VIDEO:
+ case CODEC_ID_WMV1:
#if 0
case CODEC_ID_VC1:
#endif
#if 0
case CODEC_ID_VC1:
#endif
@@
-622,6
+624,15
@@
int FFmpegExtractor::stream_component_open(int stream_index)
meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_WMV12);
meta->setData(kKeyESDS, kTypeESDS, avctx->extradata, avctx->extradata_size);
break;
meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_WMV12);
meta->setData(kKeyESDS, kTypeESDS, avctx->extradata, avctx->extradata_size);
break;
+ case CODEC_ID_WMV1:
+ LOGV("WMV1");
+ meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_WMV12);
+ break;
+ case CODEC_ID_WMV2:
+ LOGV("WMV2");
+ meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_WMV12);
+ meta->setData(kKeyESDS, kTypeESDS, avctx->extradata, avctx->extradata_size);
+ break;
default:
CHECK(!"Should not be here. Unsupported codec.");
break;
default:
CHECK(!"Should not be here. Unsupported codec.");
break;
@@
-1541,8
+1552,8
@@
static extmap FILE_EXTS[] = {
{".mkv", MEDIA_MIMETYPE_CONTAINER_MATROSKA},
{".ts", MEDIA_MIMETYPE_CONTAINER_TS},
{".avi", MEDIA_MIMETYPE_CONTAINER_AVI},
{".mkv", MEDIA_MIMETYPE_CONTAINER_MATROSKA},
{".ts", MEDIA_MIMETYPE_CONTAINER_TS},
{".avi", MEDIA_MIMETYPE_CONTAINER_AVI},
-#if 0
{".asf", MEDIA_MIMETYPE_CONTAINER_ASF},
{".asf", MEDIA_MIMETYPE_CONTAINER_ASF},
+#if 0
{".wmv", MEDIA_MIMETYPE_CONTAINER_WMV},
{".wma", MEDIA_MIMETYPE_CONTAINER_WMA},
{".mpg", MEDIA_MIMETYPE_CONTAINER_MPG},
{".wmv", MEDIA_MIMETYPE_CONTAINER_WMV},
{".wma", MEDIA_MIMETYPE_CONTAINER_WMA},
{".mpg", MEDIA_MIMETYPE_CONTAINER_MPG},
@@
-1591,6
+1602,7
@@
typedef struct {
static formatmap FILE_FORMATS[] = {
{"mpegts", MEDIA_MIMETYPE_CONTAINER_TS},
{"mov,mp4,m4a,3gp,3g2,mj2", MEDIA_MIMETYPE_CONTAINER_MOV},
static formatmap FILE_FORMATS[] = {
{"mpegts", MEDIA_MIMETYPE_CONTAINER_TS},
{"mov,mp4,m4a,3gp,3g2,mj2", MEDIA_MIMETYPE_CONTAINER_MOV},
+ {"asf", MEDIA_MIMETYPE_CONTAINER_ASF},
};
const char *BetterSniffFFMPEG(const char * uri)
};
const char *BetterSniffFFMPEG(const char * uri)
diff --git
a/libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.cpp
b/libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.cpp
index
04620db
..
6d2423d
100644
(file)
--- a/
libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.cpp
+++ b/
libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.cpp
@@
-77,6
+77,14
@@
SoftFFmpegAudio::SoftFFmpegAudio(
mMode = MODE_MPEGL2;
} else if (!strcmp(name, "OMX.ffmpeg.aac.decoder")) {
mMode = MODE_AAC;
mMode = MODE_MPEGL2;
} else if (!strcmp(name, "OMX.ffmpeg.aac.decoder")) {
mMode = MODE_AAC;
+ } else if (!strcmp(name, "OMX.ffmpeg.ape.decoder")) {
+ mMode = MODE_APE;
+ } else if (!strcmp(name, "OMX.ffmpeg.wma.decoder")) {
+ mMode = MODE_WMA;
+ } else if (!strcmp(name, "OMX.ffmpeg.dts.decoder")) {
+ mMode = MODE_DTS;
+ } else if (!strcmp(name, "OMX.ffmpeg.ra.decoder")) {
+ mMode = MODE_RA;
} else {
CHECK(!strcmp(name, "OMX.ffmpeg.ac3.decoder"));
mMode = MODE_AC3;
} else {
CHECK(!strcmp(name, "OMX.ffmpeg.ac3.decoder"));
mMode = MODE_AC3;
diff --git
a/libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.h
b/libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.h
index
620677a
..
f4aeab0
100644
(file)
--- a/
libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.h
+++ b/
libstagefright/codecs/ffmpegdec/adec/SoftFFmpegAudio.h
@@
-91,6
+91,10
@@
private:
MODE_MPEGL2,
MODE_AAC,
MODE_AC3,
MODE_MPEGL2,
MODE_AAC,
MODE_AC3,
+ MODE_APE,
+ MODE_WMA,
+ MODE_DTS,
+ MODE_RA
} mMode;
enum {
} mMode;
enum {
diff --git
a/libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.cpp
b/libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.cpp
index
c7ba136
..
84ad5c0
100644
(file)
--- a/
libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.cpp
+++ b/
libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.cpp
@@
-68,11
+68,20
@@
SoftFFmpegVideo::SoftFFmpegVideo(
mMode = MODE_MPEG2;
} else if (!strcmp(name, "OMX.ffmpeg.h263.decoder")) {
mMode = MODE_H263;
mMode = MODE_MPEG2;
} else if (!strcmp(name, "OMX.ffmpeg.h263.decoder")) {
mMode = MODE_H263;
+ } else if (!strcmp(name, "OMX.ffmpeg.vpx.decoder")) {
+ mMode = MODE_VPX;
} else if (!strcmp(name, "OMX.ffmpeg.vc1.decoder")) {
mMode = MODE_VC1;
} else if (!strcmp(name, "OMX.ffmpeg.vc1.decoder")) {
mMode = MODE_VC1;
+ } else if (!strcmp(name, "OMX.ffmpeg.divx.decoder")) {
+ mMode = MODE_DIVX;
+ } else if (!strcmp(name, "OMX.ffmpeg.wmv12.decoder")) {
+ mMode = MODE_WMV12;
+ } else if (!strcmp(name, "OMX.ffmpeg.flv.decoder")) {
+ mMode = MODE_FLV;
+ } else if (!strcmp(name, "OMX.ffmpeg.rv.decoder")) {
+ mMode = MODE_RV;
} else {
CHECK(!strcmp(name, "OMX.ffmpeg.h264.decoder"));
} else {
CHECK(!strcmp(name, "OMX.ffmpeg.h264.decoder"));
- //mIgnoreExtradata = true;
}
LOGV("SoftFFmpegVideo component: %s", name);
}
LOGV("SoftFFmpegVideo component: %s", name);
@@
-123,6
+132,10
@@
void SoftFFmpegVideo::initPorts() {
def.format.video.cMIMEType = const_cast<char *>(MEDIA_MIMETYPE_VIDEO_VC1);
def.format.video.eCompressionFormat = OMX_VIDEO_CodingWMV;
break;
def.format.video.cMIMEType = const_cast<char *>(MEDIA_MIMETYPE_VIDEO_VC1);
def.format.video.eCompressionFormat = OMX_VIDEO_CodingWMV;
break;
+ case MODE_WMV12:
+ def.format.video.cMIMEType = const_cast<char *>(MEDIA_MIMETYPE_VIDEO_WMV12);
+ def.format.video.eCompressionFormat = OMX_VIDEO_CodingWMV;
+ break;
default:
CHECK(!"Should not be here. Unsupported mime type and compression format");
break;
default:
CHECK(!"Should not be here. Unsupported mime type and compression format");
break;
@@
-244,6
+257,9
@@
status_t SoftFFmpegVideo::initDecoder() {
case MODE_VC1:
mCtx->codec_id = CODEC_ID_VC1;
break;
case MODE_VC1:
mCtx->codec_id = CODEC_ID_VC1;
break;
+ case MODE_WMV12:
+ mCtx->codec_id = CODEC_ID_WMV1; // CODEC_ID_WMV1 or CODEC_ID_WMV2?
+ break;
default:
CHECK(!"Should not be here. Unsupported codec");
break;
default:
CHECK(!"Should not be here. Unsupported codec");
break;
@@
-354,6
+370,9
@@
OMX_ERRORTYPE SoftFFmpegVideo::internalGetParameter(
case MODE_VC1:
formatParams->eCompressionFormat = OMX_VIDEO_CodingWMV;
break;
case MODE_VC1:
formatParams->eCompressionFormat = OMX_VIDEO_CodingWMV;
break;
+ case MODE_WMV12:
+ formatParams->eCompressionFormat = OMX_VIDEO_CodingWMV;
+ break;
default:
CHECK(!"Should not be here. Unsupported compression format.");
break;
default:
CHECK(!"Should not be here. Unsupported compression format.");
break;
@@
-411,6
+430,11
@@
OMX_ERRORTYPE SoftFFmpegVideo::internalSetParameter(
"video_decoder.vc1", OMX_MAX_STRINGNAME_SIZE - 1))
supported = false;
break;
"video_decoder.vc1", OMX_MAX_STRINGNAME_SIZE - 1))
supported = false;
break;
+ case MODE_WMV12:
+ if (strncmp((const char *)roleParams->cRole,
+ "video_decoder.wmv12", OMX_MAX_STRINGNAME_SIZE - 1))
+ supported = false;
+ break;
default:
CHECK(!"Should not be here. Unsupported role.");
break;
default:
CHECK(!"Should not be here. Unsupported role.");
break;
diff --git
a/libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.h
b/libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.h
index
8e2215d
..
030f0f6
100644
(file)
--- a/
libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.h
+++ b/
libstagefright/codecs/ffmpegdec/vdec/SoftFFmpegVideo.h
@@
-91,7
+91,12
@@
private:
MODE_MPEG4,
MODE_MPEG2,
MODE_H263,
MODE_MPEG4,
MODE_MPEG2,
MODE_H263,
- MODE_VC1
+ MODE_VPX,
+ MODE_VC1,
+ MODE_DIVX,
+ MODE_WMV12,
+ MODE_FLV,
+ MODE_RV
} mMode;
enum {
} mMode;
enum {