[Ffmpeg-cvslog] CVS: ffmpeg/libavformat asf.c, 1.90, 1.91 asf.h, 1.69, 1.70
Michael Niedermayer CVS
michael
Sat Jan 21 00:48:19 CET 2006
Update of /cvsroot/ffmpeg/ffmpeg/libavformat
In directory mail:/var2/tmp/cvs-serv30771
Modified Files:
asf.c asf.h
Log Message:
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
Index: asf.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/asf.c,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -d -r1.90 -r1.91
--- asf.c 12 Jan 2006 22:43:22 -0000 1.90
+++ asf.c 20 Jan 2006 23:48:16 -0000 1.91
@@ -60,6 +60,10 @@
else PRINT_IF_GUID(g, head1_guid);
else PRINT_IF_GUID(g, head2_guid);
else PRINT_IF_GUID(g, my_guid);
+ else PRINT_IF_GUID(g, ext_stream_header);
+ else PRINT_IF_GUID(g, extended_content_header);
+ else PRINT_IF_GUID(g, ext_stream_embed_stream_header);
+ else PRINT_IF_GUID(g, ext_stream_audio_stream);
else
printf("(GUID: unknown) ");
printf("0x%08x, 0x%04x, 0x%04x, {", g->v1, g->v2, g->v3);
@@ -186,6 +190,7 @@
int type, total_size, type_specific_size, sizeX;
unsigned int tag1;
int64_t pos1, pos2;
+ int test_for_ext_stream_audio;
pos1 = url_ftell(pb);
@@ -201,12 +206,17 @@
st->duration = asf->hdr.send_time /
(10000000 / 1000) - st->start_time;
get_guid(pb, &g);
+
+ test_for_ext_stream_audio = 0;
if (!memcmp(&g, &audio_stream, sizeof(GUID))) {
type = CODEC_TYPE_AUDIO;
} else if (!memcmp(&g, &video_stream, sizeof(GUID))) {
type = CODEC_TYPE_VIDEO;
} else if (!memcmp(&g, &command_stream, sizeof(GUID))) {
type = CODEC_TYPE_UNKNOWN;
+ } else if (!memcmp(&g, &ext_stream_embed_stream_header, sizeof(GUID))) {
+ test_for_ext_stream_audio = 1;
+ type = CODEC_TYPE_UNKNOWN;
} else {
goto fail;
}
@@ -219,6 +229,20 @@
asf->asfid2avid[st->id] = s->nb_streams - 1;
get_le32(pb);
+
+ if (test_for_ext_stream_audio) {
+ get_guid(pb, &g);
+ if (!memcmp(&g, &ext_stream_audio_stream, sizeof(GUID))) {
+ type = CODEC_TYPE_AUDIO;
+ get_guid(pb, &g);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_guid(pb, &g);
+ get_le32(pb);
+ }
+ }
+
st->codec->codec_type = type;
if (type == CODEC_TYPE_AUDIO) {
get_wav_header(pb, st->codec, type_specific_size);
@@ -259,7 +283,7 @@
st->codec->frame_size = 1;
break;
}
- } else {
+ } else if (type == CODEC_TYPE_VIDEO) {
get_le32(pb);
get_le32(pb);
get_byte(pb);
@@ -349,12 +373,49 @@
}
av_free(name);
}
-#if 0
+ } else if (!memcmp(&g, &ext_stream_header, sizeof(GUID))) {
+ int ext_len, payload_ext_ct, stream_ct;
+ uint32_t ext_d;
+ int64_t pos_ex_st, pos_curr;
+ pos_ex_st = url_ftell(pb);
+
+ get_le64(pb);
+ get_le64(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le32(pb);
+ get_le16(pb);
+ get_le16(pb);
+ get_le64(pb);
+ stream_ct = get_le16(pb);
+ payload_ext_ct = get_le16(pb);
+
+ for (i=0; i<stream_ct; i++){
+ get_le16(pb);
+ ext_len = get_le16(pb);
+ url_fseek(pb, ext_len, SEEK_CUR);
+ }
+
+ for (i=0; i<payload_ext_ct; i++){
+ get_guid(pb, &g);
+ ext_d=get_le16(pb);
+ ext_len=get_le32(pb);
+ url_fseek(pb, ext_len, SEEK_CUR);
+ }
+
+ // there could be a optional stream properties object to follow
+ // if so the next iteration will pick it up
} else if (!memcmp(&g, &head1_guid, sizeof(GUID))) {
int v1, v2;
get_guid(pb, &g);
v1 = get_le32(pb);
v2 = get_le16(pb);
+#if 0
} else if (!memcmp(&g, &codec_comment_header, sizeof(GUID))) {
int len, v1, n, num;
char str[256], *q;
Index: asf.h
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/asf.h,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- asf.h 12 Jan 2006 22:43:22 -0000 1.69
+++ asf.h 20 Jan 2006 23:48:16 -0000 1.70
@@ -143,6 +143,10 @@
0xB7DC0791, 0xA9B7, 0x11CF, { 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65 },
};
+static const GUID ext_stream_header = {
+ 0x14E6A5CB, 0xC672, 0x4332, { 0x83, 0x99, 0xA9, 0x69, 0x52, 0x06, 0x5B, 0x5A },
+};
+
static const GUID audio_stream = {
0xF8699E40, 0x5B4D, 0x11CF, { 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B },
};
@@ -200,6 +204,14 @@
0x33000890, 0xE5B1, 0x11CF, { 0x89, 0xF4, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xCB },
};
+static const GUID ext_stream_embed_stream_header = {
+ 0x3afb65e2, 0x47ef, 0x40f2, { 0xac, 0x2c, 0x70, 0xa9, 0x0d, 0x71, 0xd3, 0x43}
+};
+
+static const GUID ext_stream_audio_stream = {
+ 0x31178c9d, 0x03e1, 0x4528, { 0xb5, 0x82, 0x3d, 0xf9, 0xdb, 0x22, 0xf5, 0x03}
+};
+
/* I am not a number !!! This GUID is the one found on the PC used to
generate the stream */
static const GUID my_guid = {
More information about the ffmpeg-cvslog
mailing list