[FFmpeg-devel] [PATCH] Seek regression fix for RM demuxer
Kostya
kostya.shishkov
Fri Nov 2 14:50:18 CET 2007
Here is a patch to fix seeking regressions.
-------------- next part --------------
Index: libavformat/rm.h
===================================================================
--- libavformat/rm.h (revision 10905)
+++ libavformat/rm.h (working copy)
@@ -51,6 +51,7 @@
int videobufpos; ///< position for the next slice in the video buffer
int curpic_num; ///< picture number of current frame
int cur_slice, slices;
+ int64_t pktpos; ///< first slice position in file
/// Audio descrambling matrix parameters
uint8_t *audiobuf; ///< place to store reordered audio data
int64_t audiotimestamp; ///< Audio packet timestamp
Index: libavformat/rmdec.c
===================================================================
--- libavformat/rmdec.c (revision 10905)
+++ libavformat/rmdec.c (working copy)
@@ -486,6 +486,7 @@
rm->videobufpos = 8*rm->slices + 1;
rm->cur_slice = 0;
rm->curpic_num = pic_num;
+ rm->pktpos = url_ftell(pb);
}
if(type == 2){
len = FFMIN(len, pos);
@@ -512,6 +513,8 @@
if(av_new_packet(pkt, ssize) < 0)
return AVERROR(ENOMEM);
memcpy(pkt->data, rm->videobuf, ssize);
+ pkt->pts = AV_NOPTS_VALUE;
+ pkt->pos = rm->pktpos;
return 0;
}
Index: tests/seek.regression.ref
===================================================================
--- tests/seek.regression.ref (revision 10905)
+++ tests/seek.regression.ref (working copy)
@@ -1936,114 +1936,114 @@
ret:-1 st:-1 ts:-0.645825 flags:1
----------------
tests/data/a-rv10.rm
-ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:239 size:10379 flags:1
+ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:239 size:10388 flags:1
ret: 0 st:-1 ts:-1.000000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st:-1 ts:1.894167 flags:1
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2040 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2049 flags:0
ret: 0 st: 0 ts:0.788000 flags:0
-ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:72737 size:1630 flags:0
+ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:72737 size:1639 flags:0
ret: 0 st: 0 ts:-0.317000 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st:-1 ts:2.576668 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st:-1 ts:1.470835 flags:1
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2040 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2049 flags:0
ret: 0 st: 0 ts:0.365000 flags:0
-ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:41239 size:1391 flags:0
+ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:41239 size:1400 flags:0
ret: 0 st: 0 ts:-0.741000 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st:-1 ts:2.153336 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st:-1 ts:1.047503 flags:1
-ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:72737 size:1630 flags:0
+ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:72737 size:1639 flags:0
ret: 0 st: 0 ts:-0.058000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st: 0 ts:2.836000 flags:1
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st:-1 ts:1.730004 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st:-1 ts:0.624171 flags:1
-ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:41239 size:1391 flags:0
+ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:41239 size:1400 flags:0
ret: 0 st: 0 ts:-0.482000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st: 0 ts:2.413000 flags:1
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st:-1 ts:1.306672 flags:0
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2040 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2049 flags:0
ret: 0 st:-1 ts:0.200839 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st: 0 ts:-0.905000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st: 0 ts:1.989000 flags:1
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st:-1 ts:0.883340 flags:0
-ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:72737 size:1630 flags:0
+ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:72737 size:1639 flags:0
ret: 0 st:-1 ts:-0.222493 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
ret: 0 st: 0 ts:2.672000 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:1998 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:152304 size:2007 flags:0
ret: 0 st: 0 ts:1.566000 flags:1
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2040 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:110921 size:2049 flags:0
ret: 0 st:-1 ts:0.460008 flags:0
-ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:41239 size:1391 flags:0
+ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:41239 size:1400 flags:0
ret: 0 st:-1 ts:-0.645825 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1562 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:10637 size:1571 flags:0
----------------
tests/data/a-rv20.rm
-ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:239 size:9352 flags:1
+ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:239 size:9361 flags:1
ret: 0 st:-1 ts:-1.000000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st:-1 ts:1.894167 flags:1
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1891 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1900 flags:0
ret: 0 st: 0 ts:0.788000 flags:0
-ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:63237 size:1648 flags:0
+ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:63237 size:1657 flags:0
ret: 0 st: 0 ts:-0.317000 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st:-1 ts:2.576668 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st:-1 ts:1.470835 flags:1
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1891 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1900 flags:0
ret: 0 st: 0 ts:0.365000 flags:0
-ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:35101 size:1438 flags:0
+ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:35101 size:1447 flags:0
ret: 0 st: 0 ts:-0.741000 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st:-1 ts:2.153336 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st:-1 ts:1.047503 flags:1
-ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:63237 size:1648 flags:0
+ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:63237 size:1657 flags:0
ret: 0 st: 0 ts:-0.058000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st: 0 ts:2.836000 flags:1
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st:-1 ts:1.730004 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st:-1 ts:0.624171 flags:1
-ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:35101 size:1438 flags:0
+ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:35101 size:1447 flags:0
ret: 0 st: 0 ts:-0.482000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st: 0 ts:2.413000 flags:1
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st:-1 ts:1.306672 flags:0
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1891 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1900 flags:0
ret: 0 st:-1 ts:0.200839 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st: 0 ts:-0.905000 flags:0
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st: 0 ts:1.989000 flags:1
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st:-1 ts:0.883340 flags:0
-ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:63237 size:1648 flags:0
+ret: 0 st: 0 dts:1.000000 pts:1.000000 pos:63237 size:1657 flags:0
ret: 0 st:-1 ts:-0.222493 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
ret: 0 st: 0 ts:2.672000 flags:0
-ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1905 flags:0
+ret: 0 st: 0 dts:1.960000 pts:1.960000 pos:130821 size:1914 flags:0
ret: 0 st: 0 ts:1.566000 flags:1
-ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1891 flags:0
+ret: 0 st: 0 dts:1.480000 pts:1.480000 pos:95674 size:1900 flags:0
ret: 0 st:-1 ts:0.460008 flags:0
-ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:35101 size:1438 flags:0
+ret: 0 st: 0 dts:0.520000 pts:0.520000 pos:35101 size:1447 flags:0
ret: 0 st:-1 ts:-0.645825 flags:1
-ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1075 flags:0
+ret: 0 st: 0 dts:0.040000 pts:0.040000 pos:9610 size:1084 flags:0
----------------
tests/data/a-snow.avi
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
@@ -3216,59 +3216,59 @@
ret:-1 st:-1 ts:-0.645825 flags:1
----------------
tests/data/b-libav.rm
-ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:394 size:31384 flags:1
+ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:398 size:31393 flags:1
ret: 0 st:-1 ts:-1.000000 flags:0
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
ret: 0 st:-1 ts:1.894167 flags:1
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 0 ts:0.788000 flags:0
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 0 ts:-0.317000 flags:1
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
ret: 0 st: 1 ts:2.577000 flags:0
ret:-5
ret: 0 st: 1 ts:1.471000 flags:1
ret:-5
ret: 0 st:-1 ts:0.365002 flags:0
-ret: 0 st: 1 dts:0.487000 pts:0.487000 pos:191474 size:278 flags:1
+ret: 0 st: 1 dts:0.487000 pts:0.487000 pos:191482 size:278 flags:1
ret: 0 st:-1 ts:-0.740831 flags:1
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
ret: 0 st: 0 ts:2.153000 flags:0
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 0 ts:1.048000 flags:1
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 1 ts:-0.058000 flags:0
-ret: 0 st: 1 dts:0.069000 pts:0.069000 pos:42713 size:278 flags:1
+ret: 0 st: 1 dts:0.069000 pts:0.069000 pos:42717 size:278 flags:1
ret: 0 st: 1 ts:2.836000 flags:1
ret:-5
ret: 0 st:-1 ts:1.730004 flags:0
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st:-1 ts:0.624171 flags:1
-ret: 0 st: 1 dts:0.487000 pts:0.487000 pos:191474 size:278 flags:1
+ret: 0 st: 1 dts:0.487000 pts:0.487000 pos:191482 size:278 flags:1
ret: 0 st: 0 ts:-0.482000 flags:0
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
ret: 0 st: 0 ts:2.413000 flags:1
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 1 ts:1.307000 flags:0
ret:-5
ret: 0 st: 1 ts:0.201000 flags:1
-ret: 0 st: 1 dts:0.208000 pts:0.208000 pos:90741 size:278 flags:1
+ret: 0 st: 1 dts:0.208000 pts:0.208000 pos:90745 size:278 flags:1
ret: 0 st:-1 ts:-0.904994 flags:0
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
ret: 0 st:-1 ts:1.989173 flags:1
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 0 ts:0.883000 flags:0
-ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355089 size:278 flags:1
+ret: 0 st: 1 dts:0.975000 pts:0.975000 pos:355101 size:278 flags:1
ret: 0 st: 0 ts:-0.222000 flags:1
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
ret: 0 st: 1 ts:2.672000 flags:0
ret:-5
ret: 0 st: 1 ts:1.566000 flags:1
ret:-5
ret: 0 st:-1 ts:0.460008 flags:0
-ret: 0 st: 1 dts:0.487000 pts:0.487000 pos:191474 size:278 flags:1
+ret: 0 st: 1 dts:0.487000 pts:0.487000 pos:191482 size:278 flags:1
ret: 0 st:-1 ts:-0.645825 flags:1
-ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31790 size:278 flags:1
+ret: 0 st: 1 dts:0.000000 pts:0.000000 pos:31794 size:278 flags:1
----------------
tests/data/b-libav.swf
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:65 size:31385 flags:0
More information about the ffmpeg-devel
mailing list