* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
@ 2022-03-02 7:21 Andreas Unterweger
2022-03-02 11:55 ` Paul B Mahol
0 siblings, 1 reply; 9+ messages in thread
From: Andreas Unterweger @ 2022-03-02 7:21 UTC (permalink / raw)
To: FFmpeg development discussions and patches
> On 23.02.2022 15:58 Andreas Unterweger <dustsigns@gmail.com> wrote:
>
>
> The last encoded frame is now fetched on EOF. It was previously left in the encoder and caused a "1 frame left in queue" warning.
>
> Signed-off-by: Andreas Unterweger <dustsigns@gmail.com>
> ---
> doc/examples/transcode_aac.c | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/doc/examples/transcode_aac.c b/doc/examples/transcode_aac.c
> index 1cf6317e27..a09690fe45 100644
> --- a/doc/examples/transcode_aac.c
> +++ b/doc/examples/transcode_aac.c
> @@ -381,6 +381,8 @@ static int decode_audio_frame(AVFrame *frame,
> if (error < 0)
> return error;
>
> + *data_present = 0;
> + *finished = 0;
> /* Read one audio frame from the input file into a temporary packet. */
> if ((error = av_read_frame(input_format_context, input_packet)) < 0) {
> /* If we are at the end of the file, flush the decoder below. */
> @@ -559,7 +561,7 @@ static int read_decode_convert_and_store(AVAudioFifo *fifo,
> AVFrame *input_frame = NULL;
> /* Temporary storage for the converted input samples. */
> uint8_t **converted_input_samples = NULL;
> - int data_present = 0;
> + int data_present;
> int ret = AVERROR_EXIT;
>
> /* Initialize temporary storage for one input frame. */
> @@ -679,18 +681,17 @@ static int encode_audio_frame(AVFrame *frame,
> frame->pts = pts;
> pts += frame->nb_samples;
> }
> -
> +
> + *data_present = 0;
> /* Send the audio frame stored in the temporary packet to the encoder.
> * The output audio stream encoder is used to do this. */
> error = avcodec_send_frame(output_codec_context, frame);
> - /* The encoder signals that it has nothing more to encode. */
> - if (error == AVERROR_EOF) {
> - error = 0;
> - goto cleanup;
> - } else if (error < 0) {
> - fprintf(stderr, "Could not send packet for encoding (error '%s')\n",
> - av_err2str(error));
> - goto cleanup;
> + /* Check for errors, but proceed with fetching encoded samples if the
> + * encoder signals that it has nothing more to encode. */
> + if (error < 0 && error != AVERROR_EOF) {
> + fprintf(stderr, "Could not send packet for encoding (error '%s')\n",
> + av_err2str(error));
> + goto cleanup;
> }
>
> /* Receive one encoded frame from the encoder. */
> @@ -861,7 +862,6 @@ int main(int argc, char **argv)
> int data_written;
> /* Flush the encoder as it may have delayed frames. */
> do {
> - data_written = 0;
> if (encode_audio_frame(NULL, output_format_context,
> output_codec_context, &data_written))
> goto cleanup;
> --
> 2.30.2
>
Ping
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
2022-03-02 7:21 [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame Andreas Unterweger
@ 2022-03-02 11:55 ` Paul B Mahol
0 siblings, 0 replies; 9+ messages in thread
From: Paul B Mahol @ 2022-03-02 11:55 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Wed, Mar 2, 2022 at 8:22 AM Andreas Unterweger <dustsigns@gmail.com>
wrote:
> > On 23.02.2022 15:58 Andreas Unterweger <dustsigns@gmail.com> wrote:
> >
> >
> > The last encoded frame is now fetched on EOF. It was previously left in
> the encoder and caused a "1 frame left in queue" warning.
> >
> > Signed-off-by: Andreas Unterweger <dustsigns@gmail.com>
> > ---
> > doc/examples/transcode_aac.c | 22 +++++++++++-----------
> > 1 file changed, 11 insertions(+), 11 deletions(-)
> >
> > diff --git a/doc/examples/transcode_aac.c b/doc/examples/transcode_aac.c
> > index 1cf6317e27..a09690fe45 100644
> > --- a/doc/examples/transcode_aac.c
> > +++ b/doc/examples/transcode_aac.c
> > @@ -381,6 +381,8 @@ static int decode_audio_frame(AVFrame *frame,
> > if (error < 0)
> > return error;
> >
> > + *data_present = 0;
> > + *finished = 0;
> > /* Read one audio frame from the input file into a temporary
> packet. */
> > if ((error = av_read_frame(input_format_context, input_packet)) <
> 0) {
> > /* If we are at the end of the file, flush the decoder below.
> */
> > @@ -559,7 +561,7 @@ static int read_decode_convert_and_store(AVAudioFifo
> *fifo,
> > AVFrame *input_frame = NULL;
> > /* Temporary storage for the converted input samples. */
> > uint8_t **converted_input_samples = NULL;
> > - int data_present = 0;
> > + int data_present;
> > int ret = AVERROR_EXIT;
> >
> > /* Initialize temporary storage for one input frame. */
> > @@ -679,18 +681,17 @@ static int encode_audio_frame(AVFrame *frame,
> > frame->pts = pts;
> > pts += frame->nb_samples;
> > }
> > -
> > +
> > + *data_present = 0;
> > /* Send the audio frame stored in the temporary packet to the
> encoder.
> > * The output audio stream encoder is used to do this. */
> > error = avcodec_send_frame(output_codec_context, frame);
> > - /* The encoder signals that it has nothing more to encode. */
> > - if (error == AVERROR_EOF) {
> > - error = 0;
> > - goto cleanup;
> > - } else if (error < 0) {
> > - fprintf(stderr, "Could not send packet for encoding (error
> '%s')\n",
> > - av_err2str(error));
> > - goto cleanup;
> > + /* Check for errors, but proceed with fetching encoded samples if
> the
> > + * encoder signals that it has nothing more to encode. */
> > + if (error < 0 && error != AVERROR_EOF) {
> > + fprintf(stderr, "Could not send packet for encoding (error
> '%s')\n",
> > + av_err2str(error));
> > + goto cleanup;
> > }
> >
> > /* Receive one encoded frame from the encoder. */
> > @@ -861,7 +862,6 @@ int main(int argc, char **argv)
> > int data_written;
> > /* Flush the encoder as it may have delayed frames. */
> > do {
> > - data_written = 0;
>
why this is removed ?
> > if (encode_audio_frame(NULL, output_format_context,
> > output_codec_context,
> &data_written))
> > goto cleanup;
> > --
> > 2.30.2
> >
>
> Ping
> _______________________________________________
> 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".
>
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
2022-03-14 6:41 ` Andreas Unterweger
@ 2022-03-22 17:47 ` Andreas Unterweger
0 siblings, 0 replies; 9+ messages in thread
From: Andreas Unterweger @ 2022-03-22 17:47 UTC (permalink / raw)
To: ffmpeg-devel
Am 14.03.2022 um 07:41 schrieb Andreas Unterweger:
> Am 02.03.2022 um 15:07 schrieb Paul B Mahol:
>> The patch on patchwork looks fine.
>
> Good morning. Can this patch be merged? Thanks and best regards
> Andreas
> _______________________________________________
Since other commits have been merged in the meantime which made changes to this file, I am sending an updated second version that I rebased onto this newer state. As the previous version was already deemed fine, I would kindly ask again to merge this patch so that the audio transcoding example does not ignore frames anymore and that the timebase is set correctly. Thanks.
Andreas
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
2022-03-02 14:07 ` Paul B Mahol
@ 2022-03-14 6:41 ` Andreas Unterweger
2022-03-22 17:47 ` Andreas Unterweger
0 siblings, 1 reply; 9+ messages in thread
From: Andreas Unterweger @ 2022-03-14 6:41 UTC (permalink / raw)
To: ffmpeg-devel
Am 02.03.2022 um 15:07 schrieb Paul B Mahol:
> The patch on patchwork looks fine.
Good morning. Can this patch be merged? Thanks and best regards
Andreas
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
2022-03-02 12:53 Andreas Unterweger
@ 2022-03-02 14:07 ` Paul B Mahol
2022-03-14 6:41 ` Andreas Unterweger
0 siblings, 1 reply; 9+ messages in thread
From: Paul B Mahol @ 2022-03-02 14:07 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Wed, Mar 2, 2022 at 1:53 PM Andreas Unterweger <dustsigns@gmail.com>
wrote:
> > On 02.03.2022 13:27 Paul B Mahol <onemda@gmail.com> wrote:
> >
> >
> > On Wed, Mar 2, 2022 at 1:18 PM Andreas Unterweger <dustsigns@gmail.com>
> > wrote:
> >
> > > > On 02.03.2022 12:55 Paul B Mahol <onemda@gmail.com> wrote:
> > > > > > do {
> > > > > > - data_written = 0;
> > > > >
> > > >
> > > > why this is removed ?
> > > >
> > > >
> > > > > > if (encode_audio_frame(NULL,
> output_format_context,
> > > > > > output_codec_context,
> > > > > &data_written))
> > > > > > goto cleanup;
> > >
> > > It is removed because the function encode_audio_frame (next line)
> > > already sets data_written as an output value (this is also in the
> > > documentation of this function). It is thus not needed to initialize
> > > data_written a second time outside of the function.
> > >
> >
> > Note that it does not set it immediately at start, but later, and upon
> > error it is left untouched/uninitialized.
> >
>
> In case of an error, an error code is returned from the function and
> the output value has no meaning. In the calling function, the cleanup
> is invoked and data_written is not used (as it would make no sense to
> use it in case of an error, anyway).
>
> This behavior is the same as with the decode_audio_frame function. The
> only difference is that the finished = 0 initialization in line 830 is
> needed to avoid to forcefully flush the decoder in lines 865ff on an
> empty input file.
>
The patch on patchwork looks fine.
> _______________________________________________
> 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".
>
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
@ 2022-03-02 12:53 Andreas Unterweger
2022-03-02 14:07 ` Paul B Mahol
0 siblings, 1 reply; 9+ messages in thread
From: Andreas Unterweger @ 2022-03-02 12:53 UTC (permalink / raw)
To: FFmpeg development discussions and patches
> On 02.03.2022 13:27 Paul B Mahol <onemda@gmail.com> wrote:
>
>
> On Wed, Mar 2, 2022 at 1:18 PM Andreas Unterweger <dustsigns@gmail.com>
> wrote:
>
> > > On 02.03.2022 12:55 Paul B Mahol <onemda@gmail.com> wrote:
> > > > > do {
> > > > > - data_written = 0;
> > > >
> > >
> > > why this is removed ?
> > >
> > >
> > > > > if (encode_audio_frame(NULL, output_format_context,
> > > > > output_codec_context,
> > > > &data_written))
> > > > > goto cleanup;
> >
> > It is removed because the function encode_audio_frame (next line)
> > already sets data_written as an output value (this is also in the
> > documentation of this function). It is thus not needed to initialize
> > data_written a second time outside of the function.
> >
>
> Note that it does not set it immediately at start, but later, and upon
> error it is left untouched/uninitialized.
>
In case of an error, an error code is returned from the function and
the output value has no meaning. In the calling function, the cleanup
is invoked and data_written is not used (as it would make no sense to
use it in case of an error, anyway).
This behavior is the same as with the decode_audio_frame function. The
only difference is that the finished = 0 initialization in line 830 is
needed to avoid to forcefully flush the decoder in lines 865ff on an
empty input file.
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
2022-03-02 12:18 Andreas Unterweger
@ 2022-03-02 12:27 ` Paul B Mahol
0 siblings, 0 replies; 9+ messages in thread
From: Paul B Mahol @ 2022-03-02 12:27 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Wed, Mar 2, 2022 at 1:18 PM Andreas Unterweger <dustsigns@gmail.com>
wrote:
> > On 02.03.2022 12:55 Paul B Mahol <onemda@gmail.com> wrote:
> > > > do {
> > > > - data_written = 0;
> > >
> >
> > why this is removed ?
> >
> >
> > > > if (encode_audio_frame(NULL, output_format_context,
> > > > output_codec_context,
> > > &data_written))
> > > > goto cleanup;
>
> It is removed because the function encode_audio_frame (next line)
> already sets data_written as an output value (this is also in the
> documentation of this function). It is thus not needed to initialize
> data_written a second time outside of the function.
>
Note that it does not set it immediately at start, but later, and upon
error it is left untouched/uninitialized.
> _______________________________________________
> 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".
>
_______________________________________________
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] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
@ 2022-03-02 12:18 Andreas Unterweger
2022-03-02 12:27 ` Paul B Mahol
0 siblings, 1 reply; 9+ messages in thread
From: Andreas Unterweger @ 2022-03-02 12:18 UTC (permalink / raw)
To: FFmpeg development discussions and patches
> On 02.03.2022 12:55 Paul B Mahol <onemda@gmail.com> wrote:
> > > do {
> > > - data_written = 0;
> >
>
> why this is removed ?
>
>
> > > if (encode_audio_frame(NULL, output_format_context,
> > > output_codec_context,
> > &data_written))
> > > goto cleanup;
It is removed because the function encode_audio_frame (next line)
already sets data_written as an output value (this is also in the
documentation of this function). It is thus not needed to initialize
data_written a second time outside of the function.
_______________________________________________
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] 9+ messages in thread
* [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame
@ 2022-02-23 14:58 Andreas Unterweger
0 siblings, 0 replies; 9+ messages in thread
From: Andreas Unterweger @ 2022-02-23 14:58 UTC (permalink / raw)
To: ffmpeg-devel
The last encoded frame is now fetched on EOF. It was previously left in the encoder and caused a "1 frame left in queue" warning.
Signed-off-by: Andreas Unterweger <dustsigns@gmail.com>
---
doc/examples/transcode_aac.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/doc/examples/transcode_aac.c b/doc/examples/transcode_aac.c
index 1cf6317e27..a09690fe45 100644
--- a/doc/examples/transcode_aac.c
+++ b/doc/examples/transcode_aac.c
@@ -381,6 +381,8 @@ static int decode_audio_frame(AVFrame *frame,
if (error < 0)
return error;
+ *data_present = 0;
+ *finished = 0;
/* Read one audio frame from the input file into a temporary packet. */
if ((error = av_read_frame(input_format_context, input_packet)) < 0) {
/* If we are at the end of the file, flush the decoder below. */
@@ -559,7 +561,7 @@ static int read_decode_convert_and_store(AVAudioFifo *fifo,
AVFrame *input_frame = NULL;
/* Temporary storage for the converted input samples. */
uint8_t **converted_input_samples = NULL;
- int data_present = 0;
+ int data_present;
int ret = AVERROR_EXIT;
/* Initialize temporary storage for one input frame. */
@@ -679,18 +681,17 @@ static int encode_audio_frame(AVFrame *frame,
frame->pts = pts;
pts += frame->nb_samples;
}
-
+
+ *data_present = 0;
/* Send the audio frame stored in the temporary packet to the encoder.
* The output audio stream encoder is used to do this. */
error = avcodec_send_frame(output_codec_context, frame);
- /* The encoder signals that it has nothing more to encode. */
- if (error == AVERROR_EOF) {
- error = 0;
- goto cleanup;
- } else if (error < 0) {
- fprintf(stderr, "Could not send packet for encoding (error '%s')\n",
- av_err2str(error));
- goto cleanup;
+ /* Check for errors, but proceed with fetching encoded samples if the
+ * encoder signals that it has nothing more to encode. */
+ if (error < 0 && error != AVERROR_EOF) {
+ fprintf(stderr, "Could not send packet for encoding (error '%s')\n",
+ av_err2str(error));
+ goto cleanup;
}
/* Receive one encoded frame from the encoder. */
@@ -861,7 +862,6 @@ int main(int argc, char **argv)
int data_written;
/* Flush the encoder as it may have delayed frames. */
do {
- data_written = 0;
if (encode_audio_frame(NULL, output_format_context,
output_codec_context, &data_written))
goto cleanup;
--
2.30.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] 9+ messages in thread
end of thread, other threads:[~2022-03-22 17:47 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-02 7:21 [FFmpeg-devel] [PATCH 1/2] doc/examples/transcode_aac: Don't ignore last encoded frame Andreas Unterweger
2022-03-02 11:55 ` Paul B Mahol
-- strict thread matches above, loose matches on Subject: below --
2022-03-02 12:53 Andreas Unterweger
2022-03-02 14:07 ` Paul B Mahol
2022-03-14 6:41 ` Andreas Unterweger
2022-03-22 17:47 ` Andreas Unterweger
2022-03-02 12:18 Andreas Unterweger
2022-03-02 12:27 ` Paul B Mahol
2022-02-23 14:58 Andreas Unterweger
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