* [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames
@ 2023-03-16 17:09 James Almer
2023-03-17 18:38 ` Anton Khirnov
0 siblings, 1 reply; 4+ messages in thread
From: James Almer @ 2023-03-16 17:09 UTC (permalink / raw)
To: ffmpeg-devel
pts may not be set on input packets, which could result in the entire stream
being discarded.
This undoes commit 8fc2dedfe6e8fcc58dd052bf3b85cd4754133b17, reintroducing the
behavior it replaced but now allowing the caller to manually drop the preroll
samples by looking at the skip_samples side data at the start while ignoring it
on seek, by setting the skip_manual avctx flag.
Suggested-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: James Almer <jamrial@gmail.com>
---
libavcodec/vorbisdec.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index dd856a6dfe..e9dad4ef4f 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -38,6 +38,7 @@
#include "codec_internal.h"
#include "decode.h"
#include "get_bits.h"
+#include "internal.h"
#include "vorbis.h"
#include "vorbisdsp.h"
#include "vorbis_data.h"
@@ -134,7 +135,6 @@ typedef struct vorbis_context_s {
av_tx_fn mdct_fn[2];
uint8_t first_frame;
- int64_t initial_pts;
uint32_t version;
uint8_t audio_channels;
uint32_t audio_samplerate;
@@ -1839,13 +1839,7 @@ static int vorbis_decode_frame(AVCodecContext *avctx, AVFrame *frame,
if (!vc->first_frame) {
vc->first_frame = 1;
- vc->initial_pts = frame->pts;
- }
-
- if (frame->pts == vc->initial_pts) {
- *got_frame_ptr = 0;
- av_frame_unref(frame);
- return buf_size;
+ avctx->internal->skip_samples = len;
}
ff_dlog(NULL, "parsed %d bytes %d bits, returned %d samples (*ch*bits) \n",
@@ -1877,6 +1871,7 @@ static av_cold void vorbis_decode_flush(AVCodecContext *avctx)
sizeof(*vc->saved));
}
vc->previous_window = -1;
+ vc->first_frame = 0;
}
const FFCodec ff_vorbis_decoder = {
--
2.39.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames
2023-03-16 17:09 [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames James Almer
@ 2023-03-17 18:38 ` Anton Khirnov
2023-03-17 18:45 ` Jyrki Vesterinen
0 siblings, 1 reply; 4+ messages in thread
From: Anton Khirnov @ 2023-03-17 18:38 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Jyrki Vesterinen
CCing the author of the commit that's being undone.
Jyrki, you should set AV_CODEC_FLAG2_SKIP_MANUAL in
AVCodecContext.flags2 to avoid lavc dropping any samples. Please let us
know if this works for your case.
--
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames
2023-03-17 18:38 ` Anton Khirnov
@ 2023-03-17 18:45 ` Jyrki Vesterinen
2023-03-22 15:45 ` Jyrki Vesterinen
0 siblings, 1 reply; 4+ messages in thread
From: Jyrki Vesterinen @ 2023-03-17 18:45 UTC (permalink / raw)
To: Anton Khirnov, FFmpeg development discussions and patches
perjantai, 17. maaliskuuta 2023, klo 20.38 (+02:00), Anton Khirnov
kirjoitti:
> CCing the author of the commit that's being undone.
> Jyrki, you should set AV_CODEC_FLAG2_SKIP_MANUAL in
> AVCodecContext.flags2 to avoid lavc dropping any samples. Please let us
> know if this works for your case.
>
OK, I'll test it next week.
--
Jyrki Vesterinen
Programmer
NekoNyan Ltd
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames
2023-03-17 18:45 ` Jyrki Vesterinen
@ 2023-03-22 15:45 ` Jyrki Vesterinen
0 siblings, 0 replies; 4+ messages in thread
From: Jyrki Vesterinen @ 2023-03-22 15:45 UTC (permalink / raw)
To: Anton Khirnov, FFmpeg development discussions and patches
perjantai, 17. maaliskuuta 2023, klo 20.45 (+02:00), Jyrki Vesterinen
kirjoitti:
>
> perjantai, 17. maaliskuuta 2023, klo 20.38 (+02:00), Anton Khirnov
kirjoitti:
>
> > CCing the author of the commit that's being undone.
> > Jyrki, you should set AV_CODEC_FLAG2_SKIP_MANUAL in
> > AVCodecContext.flags2 to avoid lavc dropping any samples. Please let
us
> > know if this works for your case.
> >
> OK, I'll test it next week.
>
I have verified that with your patch applied and when the client code
passes AV_CODEC_FLAG2_SKIP_MANUAL, our use case works correctly and audio
samples aren't being skipped. Thank you!
--
Jyrki Vesterinen
Programmer
NekoNyan Ltd
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-03-22 15:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-16 17:09 [FFmpeg-devel] [PATCH] avcodec/vorbisdec: export skip_samples instead of dropping frames James Almer
2023-03-17 18:38 ` Anton Khirnov
2023-03-17 18:45 ` Jyrki Vesterinen
2023-03-22 15:45 ` Jyrki Vesterinen
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git