summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2009-02-04 09:35:59 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2009-02-04 09:35:59 +0000
commit034fcddf3c10578253ad7c7ad73c84ebff282dd4 (patch)
tree4a1e024be2935cfd79e5770d93c572187eccadd6 /libavformat
parent2db5da97e2b230ccaede57e4f91cf009f52f2f99 (diff)
always write mxf time base in descriptors
Originally committed as revision 16987 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mxfenc.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index ff55f40256..4f937b828c 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -573,6 +573,7 @@ static void mxf_write_structural_component(AVFormatContext *s, AVStream *st, enu
static void mxf_write_multi_descriptor(AVFormatContext *s)
{
+ MXFContext *mxf = s->priv_data;
ByteIOContext *pb = s->pb;
int i;
@@ -586,8 +587,8 @@ static void mxf_write_multi_descriptor(AVFormatContext *s)
// write sample rate
mxf_write_local_tag(pb, 8, 0x3001);
- put_be32(pb, s->streams[0]->time_base.den);
- put_be32(pb, s->streams[0]->time_base.num);
+ put_be32(pb, mxf->time_base.den);
+ put_be32(pb, mxf->time_base.num);
// write essence container ul
mxf_write_local_tag(pb, 16, 0x3004);
@@ -600,9 +601,11 @@ static void mxf_write_multi_descriptor(AVFormatContext *s)
mxf_write_uuid(pb, SubDescriptor, i);
}
-static void mxf_write_generic_desc(ByteIOContext *pb, AVStream *st, const UID key, unsigned size)
+static void mxf_write_generic_desc(AVFormatContext *s, AVStream *st, const UID key, unsigned size)
{
+ MXFContext *mxf = s->priv_data;
MXFStreamContext *sc = st->priv_data;
+ ByteIOContext *pb = s->pb;
put_buffer(pb, key, 16);
klv_encode_ber_length(pb, size);
@@ -614,8 +617,8 @@ static void mxf_write_generic_desc(ByteIOContext *pb, AVStream *st, const UID ke
put_be32(pb, st->index);
mxf_write_local_tag(pb, 8, 0x3001);
- put_be32(pb, st->time_base.den);
- put_be32(pb, st->time_base.num);
+ put_be32(pb, mxf->time_base.den);
+ put_be32(pb, mxf->time_base.num);
mxf_write_local_tag(pb, 16, 0x3004);
put_buffer(pb, mxf_essence_container_uls[sc->index].container_ul, 16);
@@ -633,7 +636,7 @@ static void mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st)
AVRational dar;
int f1, f2;
- mxf_write_generic_desc(pb, st, mxf_mpegvideo_descriptor_key, 153+sc->interlaced*4);
+ mxf_write_generic_desc(s, st, mxf_mpegvideo_descriptor_key, 153+sc->interlaced*4);
mxf_write_local_tag(pb, 4, 0x3203);
put_be32(pb, st->codec->width);
@@ -695,7 +698,7 @@ static void mxf_write_generic_sound_desc(AVFormatContext *s, AVStream *st, const
{
ByteIOContext *pb = s->pb;
- mxf_write_generic_desc(pb, st, key, size);
+ mxf_write_generic_desc(s, st, key, size);
// audio locked
mxf_write_local_tag(pb, 1, 0x3D02);