Opened 5 years ago

Closed 5 years ago

#428 closed defect (fixed)

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 (3)

patchavisynth.diff (1.3 KB) - added by chinshou 5 years ago.
patchavisynthpts.diff (467 bytes) - added by chinshou 5 years ago.
patchavisynthupsidedown.diff (1.0 KB) - added by chinshou 5 years ago.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 5 years 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 5 years ago by chinshou

comment:2 Changed 5 years 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: Changed 5 years 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 5 years ago by chinshou

Changed 5 years ago by chinshou

comment:4 in reply to: ↑ 3 Changed 5 years 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 5 years ago by michael

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

Both patches applied
Thanks

Note: See TracTickets for help on using tickets.