[Ffmpeg-cvslog] Re: ffmpeg-cvslog Digest, Vol 12, Issue 46
Steve Lhomme
steve.lhomme
Tue Mar 28 17:42:49 CEST 2006
- Previous message: [Ffmpeg-cvslog] CVS: ffmpeg/libavformat nuv.c, NONE, 1.1 Makefile, 1.126, 1.127 allformats.c, 1.64, 1.65 avformat.h, 1.146, 1.147 wav.c, 1.60, 1.61
- Next message: [Ffmpeg-cvslog] Re: ffmpeg-cvslog Digest, Vol 12, Issue 46
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
> Modified Files:
> matroska.c
> Log Message:
> fixing timebase
>
>
> Index: matroska.c
> ===================================================================
> RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/matroska.c,v
> retrieving revision 1.25
> retrieving revision 1.26
> diff -u -d -r1.25 -r1.26
> --- matroska.c 25 Mar 2006 13:37:34 -0000 1.25
> +++ matroska.c 25 Mar 2006 19:40:27 -0000 1.26
> @@ -2206,7 +2206,7 @@
> st = av_new_stream(s, track->stream_index);
> if (st == NULL)
> return AVERROR_NOMEM;
> - av_set_pts_info(st, 24, 1, 1000); /* 24 bit pts in ms */
> + av_set_pts_info(st, 64, matroska->time_scale, 1000*1000*1000); /* 64 bit pts in ns */
>
> st->codec->codec_id = codec_id;
>
> @@ -2295,7 +2295,7 @@
> case MATROSKA_ID_BLOCK: {
> uint8_t *data, *origdata;
> int size;
> - uint64_t block_time;
> + int16_t block_time;
> uint32_t *lace_size = NULL;
> int n, track, flags, laces = 0;
> uint64_t num;
> @@ -2329,7 +2329,7 @@
> }
>
> /* block_time (relative to cluster time) */
> - block_time = ((data[0] << 8) | data[1]) * matroska->time_scale;
> + block_time = (data[0] << 8) | data[1];
> data += 2;
> size -= 2;
> flags = *data;
> @@ -2440,7 +2440,7 @@
> pkt->stream_index =
> matroska->tracks[track]->stream_index;
>
> - pkt->pts = timecode / 1000000; /* ns to ms */
> + pkt->pts = timecode;
> pkt->pos= pos;
>
> matroska_queue_packet(matroska, pkt);
> @@ -2514,7 +2514,7 @@
> uint64_t num;
> if ((res = ebml_read_uint(matroska, &id, &num)) < 0)
> break;
> - cluster_time = num * matroska->time_scale;
> + cluster_time = num;
> break;
> }
While I assume you have tested this and it works, there is a dangerous
change in this code. For the moment lavf doesn't handle the "Track
Timecode Scale" (used to mix audio from 30fps & 25fps with the same
video) and it's a float. I'm not sure it will fit that new design. You
might lose some precision when you do :
block_time = ((data[0] << 8) | data[1]) * track->timecode_scale;
- Previous message: [Ffmpeg-cvslog] CVS: ffmpeg/libavformat nuv.c, NONE, 1.1 Makefile, 1.126, 1.127 allformats.c, 1.64, 1.65 avformat.h, 1.146, 1.147 wav.c, 1.60, 1.61
- Next message: [Ffmpeg-cvslog] Re: ffmpeg-cvslog Digest, Vol 12, Issue 46
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the ffmpeg-cvslog
mailing list