diff options
author | Edward Hervey <bilboed@bilboed.com> | 2006-01-24 11:58:53 +0000 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2006-01-24 11:58:53 +0000 |
commit | 883bcdafbbd4552cfc2cfa1f96c5b0b807e42037 (patch) | |
tree | d7c26093825695e60eb591f44ddba9e39dcb7395 /gst | |
parent | 8d1719bd4fd5d593815f84ff6e6701b8edd0a124 (diff) | |
download | gst-plugins-bad-883bcdafbbd4552cfc2cfa1f96c5b0b807e42037.tar.gz gst-plugins-bad-883bcdafbbd4552cfc2cfa1f96c5b0b807e42037.tar.bz2 gst-plugins-bad-883bcdafbbd4552cfc2cfa1f96c5b0b807e42037.zip |
gst/qtdemux/qtdemux.c: More coherent framerate setting on caps.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
(gst_qtdemux_add_stream), (qtdemux_parse_trak):
More coherent framerate setting on caps.
If sample_size is available, use that for the samples' duration in
the index. This enables single frame streams to work (and I imagine
fixes some other cases).
Tested on testsuite, no regression.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/qtdemux/qtdemux.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 4b92ea8d..dff4453a 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -644,8 +644,7 @@ gst_qtdemux_loop_header (GstPad * pad) buf = NULL; if (size > 0) { - GST_LOG_OBJECT (qtdemux, "reading %d bytes @ " G_GINT64_FORMAT, - size, offset); + GST_LOG_OBJECT (qtdemux, "reading %d bytes @ %lld", size, offset); if (gst_pad_pull_range (qtdemux->sinkpad, offset, size, &buf) != GST_FLOW_OK) @@ -744,12 +743,15 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux, stream->pad = gst_pad_new_from_template (templ, name); gst_object_unref (templ); g_free (name); - if (stream->samples[0].duration == 0) { + if ((stream->n_samples == 1) && (stream->samples[0].duration == 0)) { stream->fps_n = 0; stream->fps_d = 1; } else { stream->fps_n = stream->timescale; - stream->fps_d = stream->samples[0].duration; + if (stream->samples[0].duration == 0) + stream->fps_d = 1; + else + stream->fps_d = stream->samples[0].duration; } if (stream->caps) { @@ -2336,8 +2338,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) samples[j].size = samples_per_chunk * stream->bytes_per_frame / stream->samples_per_packet / stream->compression; - else + else if (stream->bytes_per_frame) samples[j].size = stream->bytes_per_frame; + else + samples[j].size = sample_size; samples[j].duration = samples_per_chunk * stream->timescale / (stream->rate / 2); samples[j].timestamp = timestamp; |