[FFmpeg-devel] [PATCH] Make parser not favor packets with pts/dts (and related fixes)
Ivan Schreter
schreter
Thu Mar 5 08:38:01 CET 2009
Michael Niedermayer wrote:
> On Wed, Mar 04, 2009 at 11:40:01PM +0100, Ivan Schreter wrote:
>
>> Michael Niedermayer wrote:
>>
>>> On Wed, Mar 04, 2009 at 09:13:54PM +0100, Ivan Schreter wrote:
>>>
>>>
>>>> Hi,
>>>>
>>>> Michael Niedermayer wrote:
>>>>
>>>>
>>>>> patch below does make the parser treat packets equal, <put some joke
>>>>> mixing
>>>>> human and packet rights here>
>>>>>
>>>>> [...]
>>>>> this should make it easier to feed pos in the parser as well
>>>>> [...]
>>>>>
>>>>>
>>>>>
>>>> Attached patches add support for storing packet position alongside dts/pts
>>>> in lavc and using it in lavf to determine correct frame position (provided
>>>> cur_pkt.pos is set correctly). They are prerequisite for seeking changes,
>>>> which rely on having AVPacket.pos set correctly.
>>>>
>>>> lavf patch causes regression in seek test (attached as well), since
>>>> positions are corrected. PTS/DTS is the same, so it seems perfectly OK.
>>>>
>>>>
>>>>
>>>
>>>
>>>> BTW, when committing changes, should the regression change go together in
>>>> one commit with the code which causes the regression, or separately?
>>>>
>>>>
>>> regression changes should be in the comment that causes them to change so that
>>> one can check out any revission and has a working "make test"
>>>
>>>
>>>
>> It was also my idea how it should work :-)
>>
>>
>>> [..]
>>>
>>>
>>>> got_packet:
>>>> pkt->duration = 0;
>>>> pkt->stream_index = st->index;
>>>> pkt->pts = st->parser->pts;
>>>> pkt->dts = st->parser->dts;
>>>> + if (st->parser->pos != AV_NOPTS_VALUE)
>>>> + pkt->pos = st->parser->pos;
>>>> + else
>>>> + pkt->pos = st->cur_pkt.pos;
>>>>
>>>>
>>> is this still needed?
>>> if so why?
>>>
>>>
>> Actually not anymore.
>>
>> So this hunk should be OK:
>>
>> @@ -967,12 +968,12 @@
>>
>> /* return packet if any */
>> if (pkt->size) {
>> - pkt->pos = st->cur_pkt.pos; // Isn't
>> quite accurate butclose.
>> got_packet:
>> pkt->duration = 0;
>> pkt->stream_index = st->index;
>> pkt->pts = st->parser->pts;
>> pkt->dts = st->parser->dts;
>> + pkt->pos = st->parser->pos;
>> pkt->destruct = av_destruct_packet_nofree;
>> compute_pkt_fields(s, st, st->parser, pkt);
>>
>> Any other comments or shall I commit?
>>
>
> i think the rest is ok
>
Applied.
BTW, are there any seek tests on FATE? If so, possibly they will also
need regression update (and also after I commit seeking keyframe patches
after review later)...
Regards,
Ivan
More information about the ffmpeg-devel
mailing list