Ticket #428 (closed defect: fixed)

Opened 22 months ago

Last modified 22 months ago

avisynth generate wrong audio pts

Reported by: chinshou Owned by:
Priority: normal Component: avformat
Version: unspecified Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

I just found avisynth.c generate very large audio pts.

we can use ffplay to play following avs

a0=DirectShowSource?("1.avi")
v1=ImageSource?("1.jpg", start=0, end = 14900, fps=30).BilinearResize?(320,240)
video=FlipVertical?(v1)
audio=(a0)
AudioDubEx?(video,audio)

From the ffplay console log

18178.97 A-V:18166.132 s:0.0 aq= 314KB vq= 8552KB sq= 0B f=0/0 /0

I noticed that audio pts was very large than video pts.It seems we should remove following code from avisynth_read_packet function

pkt->pts = stream->read;<-------------remove this line

and correct pts should be

pkt->pts = avs->streams[stream_id].read / avs->streams[stream_id].chunck_samples;

static int avisynth_read_packet(AVFormatContext *s, AVPacket *pkt)
{
...

if (av_new_packet(pkt, stream->chunck_size))

return AVERROR(EIO);

pkt->stream_index = stream_id;
pkt->pts = avs->streams[stream_id].read / avs->streams[stream_id].chunck_samples;

res = AVIStreamRead(stream->handle, stream->read, stream->chunck_samples, pkt->data, stream->chunck_size, &read_size, NULL);

pkt->pts = stream->read;<-------------remove this line
pkt->size = read_size;

stream->read += stream->chunck_samples;

...
}

best regards
chinshou

Attachments

patchavisynth.diff Download (1.3 KB) - added by chinshou 22 months ago.
patchavisynthpts.diff Download (467 bytes) - added by chinshou 22 months ago.
patchavisynthupsidedown.diff Download (1.0 KB) - added by chinshou 22 months ago.

Change History

comment:1 Changed 22 months ago by cehoyos

  • Status changed from new to open

Please produce your patch with "git diff libavformat/avisynth.c >patchavisynth.diff" and send the resulting file patchavisynth.diff to ffmpeg-devel (or attach it here).

Changed 22 months ago by chinshou

comment:2 Changed 22 months ago by chinshou

I have upload the patch, besides pts bug fix, this patch also fix the image displayed upside down bug .The upsidedown bug can be reproduced by following avs script

ImageSource?("Sample1.jpg", start=0, end = 40, fps=25)

comment:3 follow-up: ↓ 4 Changed 22 months ago by cehoyos

The indentation looks wrong, if the setting of pts is really wrong (I don't know, but in your original report you suggest an alternative calculation), please remove the line (do not just outcomment it), and unfortunately, we absolutely require "one patch per issue", so please attach (or send to ffmpeg-devel) one patch for the original (pts) issue and one patch for upside-down.

Changed 22 months ago by chinshou

Changed 22 months ago by chinshou

comment:4 in reply to: ↑ 3 Changed 22 months ago by chinshou

Replying to cehoyos:

The indentation looks wrong, if the setting of pts is really wrong (I don't know, but in your original report you suggest an alternative calculation), please remove the line (do not just outcomment it), and unfortunately, we absolutely require "one patch per issue", so please attach (or send to ffmpeg-devel) one patch for the original (pts) issue and one patch for upside-down.

I have split the fix to two patches, original avisynth calculate the pts two times, the finally calculation was wrong , so I only delete one line in the pts patch.

comment:5 Changed 22 months ago by michael

  • Status changed from open to closed
  • Resolution set to fixed

Both patches applied
Thanks

Note: See TracTickets for help on using tickets.