1 diff -ur ffms-2.17-src/src/core/codectype.cpp ffms-2.17-src-ffmpeg1.0/src/core/codectype.cpp
2 --- ffms-2.17-src/src/core/codectype.cpp 2012-01-22 05:46:09.000000000 +0100
3 +++ ffms-2.17-src-ffmpeg1.0/src/core/codectype.cpp 2012-11-08 13:08:43.894100438 +0100
6 typedef struct CodecTags {
12 static const CodecTags mkv_codec_tags[] = {
16 typedef struct AVCodecTag {
26 -CodecID MatroskaToFFCodecID(char *Codec, void *CodecPrivate, unsigned int FourCC, unsigned int BitsPerSample) {
27 +AVCodecID MatroskaToFFCodecID(char *Codec, void *CodecPrivate, unsigned int FourCC, unsigned int BitsPerSample) {
28 /* Look up native codecs */
29 for(int i = 0; mkv_codec_tags[i].id != CODEC_ID_NONE; i++){
30 if(!strncmp(mkv_codec_tags[i].str, Codec,
33 // Uncompressed and exotic format fixup
34 // This list is incomplete
35 - CodecID CID = mkv_codec_tags[i].id;
36 + AVCodecID CID = mkv_codec_tags[i].id;
38 case CODEC_ID_PCM_S16LE:
39 switch (BitsPerSample) {
40 diff -ur ffms-2.17-src/src/core/codectype.h ffms-2.17-src-ffmpeg1.0/src/core/codectype.h
41 --- ffms-2.17-src/src/core/codectype.h 2012-01-22 05:46:09.000000000 +0100
42 +++ ffms-2.17-src-ffmpeg1.0/src/core/codectype.h 2012-11-08 13:08:50.330766878 +0100
44 #include "ffmscompat.h"
46 FFMS_TrackType HaaliTrackTypeToFFTrackType(int TT);
47 -CodecID MatroskaToFFCodecID(char *Codec, void *CodecPrivate, unsigned int FourCC = 0, unsigned int BitsPerSample = 0);
48 +AVCodecID MatroskaToFFCodecID(char *Codec, void *CodecPrivate, unsigned int FourCC = 0, unsigned int BitsPerSample = 0);
49 const char *GetLAVCSampleFormatName(AVSampleFormat s);
50 diff -ur ffms-2.17-src/src/core/matroskaaudio.cpp ffms-2.17-src-ffmpeg1.0/src/core/matroskaaudio.cpp
51 --- ffms-2.17-src/src/core/matroskaaudio.cpp 2012-01-22 05:46:09.000000000 +0100
52 +++ ffms-2.17-src-ffmpeg1.0/src/core/matroskaaudio.cpp 2012-11-08 13:11:08.054095355 +0100
54 CodecContext.reset(avcodec_alloc_context3(NULL), DeleteMatroskaCodecContext);
57 - AVCodec *Codec = avcodec_find_decoder(MatroskaToFFCodecID(TI->CodecID, TI->CodecPrivate, 0, TI->AV.Audio.BitDepth));
58 + AVCodec *Codec = avcodec_find_decoder(MatroskaToFFCodecID(TI->MKVCodecID, TI->CodecPrivate, 0, TI->AV.Audio.BitDepth));
61 throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC, "Audio codec not found");
62 diff -ur ffms-2.17-src/src/core/matroskaindexer.cpp ffms-2.17-src-ffmpeg1.0/src/core/matroskaindexer.cpp
63 --- ffms-2.17-src/src/core/matroskaindexer.cpp 2012-01-22 05:46:09.000000000 +0100
64 +++ ffms-2.17-src-ffmpeg1.0/src/core/matroskaindexer.cpp 2012-11-08 13:11:15.454095093 +0100
67 for (unsigned int i = 0; i < mkv_GetNumTracks(MF); i++) {
68 TrackInfo *TI = mkv_GetTrackInfo(MF, i);
69 - Codec[i] = avcodec_find_decoder(MatroskaToFFCodecID(TI->CodecID, TI->CodecPrivate, 0, TI->AV.Audio.BitDepth));
70 + Codec[i] = avcodec_find_decoder(MatroskaToFFCodecID(TI->MKVCodecID, TI->CodecPrivate, 0, TI->AV.Audio.BitDepth));
74 diff -ur ffms-2.17-src/src/core/matroskaparser.c ffms-2.17-src-ffmpeg1.0/src/core/matroskaparser.c
75 --- ffms-2.17-src/src/core/matroskaparser.c 2011-01-27 21:38:25.000000000 +0100
76 +++ ffms-2.17-src-ffmpeg1.0/src/core/matroskaparser.c 2012-11-08 13:12:09.934093171 +0100
78 readLangCC(mf, len, t.Language);
83 errorjmp(mf,"Duplicate CodecID");
84 - STRGETA(mf,t.CodecID,len);
85 + STRGETA(mf,t.MKVCodecID,len);
87 case 0x63a2: // CodecPrivate
92 // validate track info
95 errorjmp(mf,"Track has no Codec ID");
101 cpadd += strlen(t.Name)+1;
103 - cpadd += strlen(t.CodecID)+1;
105 + cpadd += strlen(t.MKVCodecID)+1;
107 tp = mf->cache->memalloc(mf->cache,sizeof(*tp) + cplen + cslen + cpadd);
109 @@ -1546,7 +1546,7 @@
111 cp = (char*)(tp+1) + cplen + cslen;
112 CopyStr(&tp->Name,&cp);
113 - CopyStr(&tp->CodecID,&cp);
114 + CopyStr(&tp->MKVCodecID,&cp);
116 // set default language
117 if (!tp->Language[0])
118 @@ -1797,7 +1797,7 @@
119 proc = ASGET(mf, ch, Process);
120 memset(proc, 0, sizeof(*proc));
122 - proc->CodecID = (unsigned)readUInt(mf,(unsigned)len);
123 + proc->MKVCodecID = (unsigned)readUInt(mf,(unsigned)len);
125 case 0x450d: // ChapProcessPrivate
127 diff -ur ffms-2.17-src/src/core/matroskaparser.h ffms-2.17-src-ffmpeg1.0/src/core/matroskaparser.h
128 --- ffms-2.17-src/src/core/matroskaparser.h 2010-11-28 03:28:40.000000000 +0100
129 +++ ffms-2.17-src-ffmpeg1.0/src/core/matroskaparser.h 2012-11-08 13:10:59.050762337 +0100
131 /* various strings */
138 typedef struct TrackInfo TrackInfo;
142 struct ChapterProcess {
144 + unsigned MKVCodecID;
145 unsigned CodecPrivateLength;
147 unsigned nCommands,nCommandsSize;
148 diff -ur ffms-2.17-src/src/core/matroskavideo.cpp ffms-2.17-src-ffmpeg1.0/src/core/matroskavideo.cpp
149 --- ffms-2.17-src/src/core/matroskavideo.cpp 2012-01-22 05:46:09.000000000 +0100
150 +++ ffms-2.17-src-ffmpeg1.0/src/core/matroskavideo.cpp 2012-11-08 13:12:29.977425796 +0100
152 CodecContext->thread_count = 1;
155 - Codec = avcodec_find_decoder(MatroskaToFFCodecID(TI->CodecID, TI->CodecPrivate));
156 + Codec = avcodec_find_decoder(MatroskaToFFCodecID(TI->MKVCodecID, TI->CodecPrivate));
158 throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC,
159 "Video codec not found");
160 diff -ur ffms-2.17-src/src/core/utils.cpp ffms-2.17-src-ffmpeg1.0/src/core/utils.cpp
161 --- ffms-2.17-src/src/core/utils.cpp 2012-11-08 13:13:28.604090395 +0100
162 +++ ffms-2.17-src-ffmpeg1.0/src/core/utils.cpp 2012-11-08 13:12:54.737424924 +0100
164 uint8_t *PrivateDataSrc = static_cast<uint8_t *>(TI->CodecPrivate);
165 size_t PrivateDataSize = TI->CodecPrivateSize;
166 size_t BIHSize = sizeof(FFMS_BITMAPINFOHEADER); // 40 bytes
167 - if (!strncmp(TI->CodecID, "V_MS/VFW/FOURCC", 15) && PrivateDataSize >= BIHSize) {
168 + if (!strncmp(TI->MKVCodecID, "V_MS/VFW/FOURCC", 15) && PrivateDataSize >= BIHSize) {
169 // For some reason UTVideo requires CodecContext->codec_tag (i.e. the FourCC) to be set.
170 // Fine, it can't hurt to set it, so let's go find it.
171 // In a V_MS/VFW/FOURCC track, the codecprivate starts with a BITMAPINFOHEADER. If you treat that struct