Commit db945838 authored by conrad's avatar conrad

oggdec: Determine pts and filepos on a packet basis in read_timestamp

This takes into account whether the granule defines the start or end times
of packets, and sets the correct file offset of the associated page.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@22462 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 947754b8
...@@ -581,15 +581,14 @@ ogg_read_timestamp (AVFormatContext * s, int stream_index, int64_t * pos_arg, ...@@ -581,15 +581,14 @@ ogg_read_timestamp (AVFormatContext * s, int stream_index, int64_t * pos_arg,
int64_t pts = AV_NOPTS_VALUE; int64_t pts = AV_NOPTS_VALUE;
int i; int i;
url_fseek(bc, *pos_arg, SEEK_SET); url_fseek(bc, *pos_arg, SEEK_SET);
while (url_ftell(bc) < pos_limit && !ogg_read_page (s, &i)) { ogg_reset(ogg);
if (ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0 &&
ogg->streams[i].codec && i == stream_index) { while (url_ftell(bc) < pos_limit && !ogg_packet(s, &i, NULL, NULL, pos_arg)) {
pts = ogg_gptopts(s, i, ogg->streams[i].granule, NULL); if (i == stream_index) {
// FIXME: this is the position of the packet after the one with above pts = ogg_calc_pts(s, i, NULL);
// pts.
*pos_arg = url_ftell(bc);
break;
} }
if (pts != AV_NOPTS_VALUE)
break;
} }
ogg_reset(ogg); ogg_reset(ogg);
return pts; return pts;
......
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 125 size: 1364 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 125 size: 1364
ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st:-1 flags:0 ts:-1.000000
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382
ret: 0 st:-1 flags:1 ts: 1.894167 ret:-1 st:-1 flags:1 ts: 1.894167
ret:-EIO
ret: 0 st: 0 flags:0 ts: 0.788345 ret: 0 st: 0 flags:0 ts: 0.788345
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 11410 size: 1365 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 11410 size: 1365
ret: 0 st: 0 flags:1 ts:-0.317506 ret: 0 st: 0 flags:1 ts:-0.317506
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381
ret: 0 st:-1 flags:0 ts: 2.576668 ret:-1 st:-1 flags:0 ts: 2.576668
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 12808 size: 1223 ret:-1 st:-1 flags:1 ts: 1.470835
ret: 0 st:-1 flags:1 ts: 1.470835
ret:-EIO
ret: 0 st: 0 flags:0 ts: 0.365011 ret: 0 st: 0 flags:0 ts: 0.365011
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 7191 size: 1370 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 7191 size: 1370
ret: 0 st: 0 flags:1 ts:-0.740839 ret: 0 st: 0 flags:1 ts:-0.740839
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381
ret: 0 st:-1 flags:0 ts: 2.153336 ret:-1 st:-1 flags:0 ts: 2.153336
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 12808 size: 1223 ret:-1 st:-1 flags:1 ts: 1.047503
ret: 0 st:-1 flags:1 ts: 1.047503
ret:-EIO
ret: 0 st: 0 flags:0 ts:-0.058322 ret: 0 st: 0 flags:0 ts:-0.058322
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382
ret: 0 st: 0 flags:1 ts: 2.835828 ret:-1 st: 0 flags:1 ts: 2.835828
ret:-EIO ret:-1 st:-1 flags:0 ts: 1.730004
ret: 0 st:-1 flags:0 ts: 1.730004
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 12808 size: 1223
ret: 0 st:-1 flags:1 ts: 0.624171 ret: 0 st:-1 flags:1 ts: 0.624171
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 5768 size: 1390 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 5768 size: 1390
ret: 0 st: 0 flags:0 ts:-0.481655 ret: 0 st: 0 flags:0 ts:-0.481655
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382
ret: 0 st: 0 flags:1 ts: 2.412494 ret:-1 st: 0 flags:1 ts: 2.412494
ret:-EIO ret:-1 st:-1 flags:0 ts: 1.306672
ret: 0 st:-1 flags:0 ts: 1.306672
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 12808 size: 1223
ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st:-1 flags:1 ts: 0.200839
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381
ret: 0 st: 0 flags:0 ts:-0.904989 ret: 0 st: 0 flags:0 ts:-0.904989
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 4353 size: 1382
ret: 0 st: 0 flags:1 ts: 1.989184 ret:-1 st: 0 flags:1 ts: 1.989184
ret:-EIO ret:-1 st:-1 flags:0 ts: 0.883340
ret: 0 st:-1 flags:0 ts: 0.883340
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 12808 size: 1223
ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st:-1 flags:1 ts:-0.222493
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 1522 size: 1381
ret: 0 st: 0 flags:0 ts: 2.671678 ret:-1 st: 0 flags:0 ts: 2.671678
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 12808 size: 1223 ret:-1 st: 0 flags:1 ts: 1.565850
ret: 0 st: 0 flags:1 ts: 1.565850
ret:-EIO
ret: 0 st:-1 flags:0 ts: 0.460008 ret: 0 st:-1 flags:0 ts: 0.460008
ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 8594 size: 1381 ret: 0 st: 0 flags:1 dts: NOPTS pts: NOPTS pos: 8594 size: 1381
ret: 0 st:-1 flags:1 ts:-0.645825 ret: 0 st:-1 flags:1 ts:-0.645825
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment