Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: [FFmpeg-devel] [PATCH 05/11] avcodec/flac: Move ff_flac_get_max_frame_size() to flacenc.c
Date: Sun, 28 Aug 2022 23:19:51 +0200
Message-ID: <AS8P250MB074494F60BE7DC31241FBB7F8F779@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <AS8P250MB07442EF78806549AFE15D6D98F779@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>

It is its only user.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavcodec/Makefile  |  2 +-
 libavcodec/flac.c    | 21 ---------------------
 libavcodec/flac.h    |  8 --------
 libavcodec/flacenc.c | 40 ++++++++++++++++++++++++++++++++++------
 4 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index cb80f73d99..945908e3b8 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -347,7 +347,7 @@ OBJS-$(CONFIG_FIC_DECODER)             += fic.o
 OBJS-$(CONFIG_FITS_DECODER)            += fitsdec.o fits.o
 OBJS-$(CONFIG_FITS_ENCODER)            += fitsenc.o
 OBJS-$(CONFIG_FLAC_DECODER)            += flacdec.o flacdata.o flacdsp.o flac.o
-OBJS-$(CONFIG_FLAC_ENCODER)            += flacenc.o flacdata.o flacencdsp.o flac.o
+OBJS-$(CONFIG_FLAC_ENCODER)            += flacenc.o flacdata.o flacencdsp.o
 OBJS-$(CONFIG_FLASHSV_DECODER)         += flashsv.o
 OBJS-$(CONFIG_FLASHSV_ENCODER)         += flashsvenc.o
 OBJS-$(CONFIG_FLASHSV2_ENCODER)        += flashsv2enc.o
diff --git a/libavcodec/flac.c b/libavcodec/flac.c
index dd68830622..03c7bfb9e6 100644
--- a/libavcodec/flac.c
+++ b/libavcodec/flac.c
@@ -145,27 +145,6 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
     return 0;
 }
 
-int ff_flac_get_max_frame_size(int blocksize, int ch, int bps)
-{
-    /* Technically, there is no limit to FLAC frame size, but an encoder
-       should not write a frame that is larger than if verbatim encoding mode
-       were to be used. */
-
-    int count;
-
-    count = 16;                  /* frame header */
-    count += ch * ((7+bps+7)/8); /* subframe headers */
-    if (ch == 2) {
-        /* for stereo, need to account for using decorrelation */
-        count += (( 2*bps+1) * blocksize + 7) / 8;
-    } else {
-        count += ( ch*bps    * blocksize + 7) / 8;
-    }
-    count += 2; /* frame footer */
-
-    return count;
-}
-
 int ff_flac_is_extradata_valid(AVCodecContext *avctx,
                                enum FLACExtradataFormat *format,
                                uint8_t **streaminfo_start)
diff --git a/libavcodec/flac.h b/libavcodec/flac.h
index 315df492a3..239e842716 100644
--- a/libavcodec/flac.h
+++ b/libavcodec/flac.h
@@ -109,14 +109,6 @@ int ff_flac_is_extradata_valid(AVCodecContext *avctx,
                                enum FLACExtradataFormat *format,
                                uint8_t **streaminfo_start);
 
-/**
- * Calculate an estimate for the maximum frame size based on verbatim mode.
- * @param blocksize block size, in samples
- * @param ch number of channels
- * @param bps bits-per-sample
- */
-int ff_flac_get_max_frame_size(int blocksize, int ch, int bps);
-
 /**
  * Validate and decode a frame header.
  * @param      avctx AVCodecContext to use as av_log() context
diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c
index 73cf185314..0170e02ae8 100644
--- a/libavcodec/flacenc.c
+++ b/libavcodec/flacenc.c
@@ -157,6 +157,34 @@ static void write_streaminfo(FlacEncodeContext *s, uint8_t *header)
 }
 
 
+/**
+ * Calculate an estimate for the maximum frame size based on verbatim mode.
+ * @param blocksize block size, in samples
+ * @param ch number of channels
+ * @param bps bits-per-sample
+ */
+static int flac_get_max_frame_size(int blocksize, int ch, int bps)
+{
+    /* Technically, there is no limit to FLAC frame size, but an encoder
+       should not write a frame that is larger than if verbatim encoding mode
+       were to be used. */
+
+    int count;
+
+    count = 16;                  /* frame header */
+    count += ch * ((7+bps+7)/8); /* subframe headers */
+    if (ch == 2) {
+        /* for stereo, need to account for using decorrelation */
+        count += (( 2*bps+1) * blocksize + 7) / 8;
+    } else {
+        count += ( ch*bps    * blocksize + 7) / 8;
+    }
+    count += 2; /* frame footer */
+
+    return count;
+}
+
+
 /**
  * Set blocksize based on samplerate.
  * Choose the closest predefined blocksize >= BLOCK_TIME_MS milliseconds.
@@ -378,9 +406,9 @@ static av_cold int flac_encode_init(AVCodecContext *avctx)
     s->max_blocksize = s->avctx->frame_size;
 
     /* set maximum encoded frame size in verbatim mode */
-    s->max_framesize = ff_flac_get_max_frame_size(s->avctx->frame_size,
-                                                  s->channels,
-                                                  s->avctx->bits_per_raw_sample);
+    s->max_framesize = flac_get_max_frame_size(s->avctx->frame_size,
+                                               s->channels,
+                                               s->avctx->bits_per_raw_sample);
 
     /* initialize MD5 context */
     s->md5ctx = av_md5_alloc();
@@ -1353,9 +1381,9 @@ static int flac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
 
     /* change max_framesize for small final frame */
     if (frame->nb_samples < s->frame.blocksize) {
-        s->max_framesize = ff_flac_get_max_frame_size(frame->nb_samples,
-                                                      s->channels,
-                                                      avctx->bits_per_raw_sample);
+        s->max_framesize = flac_get_max_frame_size(frame->nb_samples,
+                                                   s->channels,
+                                                   avctx->bits_per_raw_sample);
     }
 
     init_frame(s, frame->nb_samples);
-- 
2.34.1

_______________________________________________
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".

  parent reply	other threads:[~2022-08-28 21:20 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-28 21:18 [FFmpeg-devel] [PATCH 01/11] avcodec/mpeg4video: Factor non-codec stuff out into a header of its own Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 02/11] avcodec/flac: Remove unnecessary FLACSTREAMINFO define Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 03/11] avcodec/flacdec: Shorten name Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 04/11] avcodec/flacdec: Don't infer max_framesize unnecessarily Andreas Rheinhardt
2022-08-28 21:19 ` Andreas Rheinhardt [this message]
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 06/11] avcodec/flac: Remove unused parameter from ff_flac_is_extradata_valid() Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 07/11] avcodec/flac: Remove pointless define Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 08/11] avcodec/flac: Move decoder+parser stuff into a new header, flac_parse.h Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 09/11] avcodec/flac: Don't use bytestream API unnecessarily Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 10/11] avcodec/encode: Avoid unreferencing blank AVFrames Andreas Rheinhardt
2022-09-02 20:16   ` Andreas Rheinhardt
2022-08-28 21:19 ` [FFmpeg-devel] [PATCH 11/11] avcodec/frame_thread_encoder: Stop serializing unreferencing AVFrames Andreas Rheinhardt
2022-08-28 23:34 ` [FFmpeg-devel] [PATCH 12/16] avutil/internal: Remove unused ff_rint64_clip() Andreas Rheinhardt
2022-08-28 23:34 ` [FFmpeg-devel] [PATCH 13/16] avutil/internal: Remove unused FF_SYMVER Andreas Rheinhardt
2022-08-28 23:34 ` [FFmpeg-devel] [PATCH 14/16] avutil/dict: Move avpriv_dict_set_timestamp() to a header of its own Andreas Rheinhardt
2022-08-28 23:34 ` [FFmpeg-devel] [PATCH 15/16] avutil/internal: Move avpriv-file API " Andreas Rheinhardt
2022-08-28 23:34 ` [FFmpeg-devel] [PATCH 16/16] avutil/fifo: Properly deprecate av_tempfile() Andreas Rheinhardt
2022-08-31  3:30   ` Anton Khirnov
2022-08-31  3:34     ` Andreas Rheinhardt
2022-08-29 13:45 ` [FFmpeg-devel] [PATCH 17/18] avcodec/codec_internal: Add macro to set AVCodec.long_name Andreas Rheinhardt
2022-08-29 13:45 ` [FFmpeg-devel] [PATCH 18/18] avcodec/codec_internal: Add macros for update_thread_context(_for_user) Andreas Rheinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AS8P250MB074494F60BE7DC31241FBB7F8F779@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM \
    --to=andreas.rheinhardt@outlook.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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