On 11/29/2011 10:51 AM, Anton Khirnov wrote:

> 
> On Tue, 29 Nov 2011 09:16:01 -0500, Justin Ruggles <[email protected]> 
> wrote:
>> On 11/29/2011 03:03 AM, Anton Khirnov wrote:
>>
>>> This was broken in 2a651b719c309c5e2fc663a5a9d6ca36153ab98f.
>>> ---
>>>  avconv.c |    1 +
>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/avconv.c b/avconv.c
>>> index 4c5498a..067678d 100644
>>> --- a/avconv.c
>>> +++ b/avconv.c
>>> @@ -1906,6 +1906,7 @@ static int output_packet(InputStream *ist,
>>>      /* handle stream copy */
>>>      if (!ist->decoding_needed) {
>>>          rate_emu_sleep(ist);
>>> +        ist->pts = ist->next_pts;
>>>          switch (ist->st->codec->codec_type) {
>>>          case AVMEDIA_TYPE_AUDIO:
>>>              ist->next_pts += ((int64_t)AV_TIME_BASE * 
>>> ist->st->codec->frame_size) /
>>
>>
>> Is this really correct? Shouldn't it be using the pts from the input
>> packet, not the made-up pts?
>>
> 
> I'm simply restoring the previous behavior, I don't yet understand it
> enough for any claims of correctness ;)
> But near the begginning there's this
> 
> if(pkt->dts != AV_NOPTS_VALUE)
>         ist->next_pts = ist->pts = av_rescale_q(pkt->dts, ist->st->time_base, 
> AV_TIME_BASE_Q);
> 
> so the line added in this patch is a noop when the packet contains dts.


I see. Patch looks ok then. I was thinking of previous behavior and
didn't realize it had changed.

-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to