[FFmpeg-cvslog] avcodec/speedhqenc: Move speedhq_encode_init() down
Andreas Rheinhardt
git at videolan.org
Wed Mar 26 06:09:28 EET 2025
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Mon Mar 3 19:24:25 2025 +0100| [e308292a3135ede0604df45483f7fe7014d26561] | committer: Andreas Rheinhardt
avcodec/speedhqenc: Move speedhq_encode_init() down
Will avoid forward declarations later.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e308292a3135ede0604df45483f7fe7014d26561
---
libavcodec/speedhqenc.c | 102 ++++++++++++++++++++++++------------------------
1 file changed, 51 insertions(+), 51 deletions(-)
diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c
index 2e09016935..daccd0c3bf 100644
--- a/libavcodec/speedhqenc.c
+++ b/libavcodec/speedhqenc.c
@@ -95,57 +95,6 @@ static av_cold void speedhq_init_static_data(void)
ff_speedhq_vlc_table, uni_speedhq_ac_vlc_len);
}
-static av_cold int speedhq_encode_init(AVCodecContext *avctx)
-{
- static AVOnce init_static_once = AV_ONCE_INIT;
- MpegEncContext *const s = avctx->priv_data;
- int ret;
-
- if (avctx->width > 65500 || avctx->height > 65500) {
- av_log(avctx, AV_LOG_ERROR, "SpeedHQ does not support resolutions above 65500x65500\n");
- return AVERROR(EINVAL);
- }
-
- // border is not implemented correctly at the moment, see ticket #10078
- if (avctx->width % 16) {
- av_log(avctx, AV_LOG_ERROR, "width must be a multiple of 16\n");
- return AVERROR_PATCHWELCOME;
- }
-
- switch (avctx->pix_fmt) {
- case AV_PIX_FMT_YUV420P:
- avctx->codec_tag = MKTAG('S','H','Q','0');
- break;
- case AV_PIX_FMT_YUV422P:
- avctx->codec_tag = MKTAG('S','H','Q','2');
- break;
- case AV_PIX_FMT_YUV444P:
- avctx->codec_tag = MKTAG('S','H','Q','4');
- break;
- default:
- av_assert0(0);
- }
-
- s->min_qcoeff = -2048;
- s->max_qcoeff = 2047;
-
- s->intra_ac_vlc_length =
- s->intra_ac_vlc_last_length =
- s->intra_chroma_ac_vlc_length =
- s->intra_chroma_ac_vlc_last_length = uni_speedhq_ac_vlc_len;
-
- s->y_dc_scale_table =
- s->c_dc_scale_table = ff_mpeg12_dc_scale_table[3];
-
- ret = ff_mpv_encode_init(avctx);
- if (ret < 0)
- return ret;
-
- ff_thread_once(&init_static_once, speedhq_init_static_data);
-
- return 0;
-}
-
void ff_speedhq_encode_picture_header(MpegEncContext *s)
{
SpeedHQEncContext *ctx = (SpeedHQEncContext*)s;
@@ -278,6 +227,57 @@ void ff_speedhq_encode_mb(MpegEncContext *s, int16_t block[12][64])
s->i_tex_bits += get_bits_diff(s);
}
+static av_cold int speedhq_encode_init(AVCodecContext *avctx)
+{
+ static AVOnce init_static_once = AV_ONCE_INIT;
+ MpegEncContext *const s = avctx->priv_data;
+ int ret;
+
+ if (avctx->width > 65500 || avctx->height > 65500) {
+ av_log(avctx, AV_LOG_ERROR, "SpeedHQ does not support resolutions above 65500x65500\n");
+ return AVERROR(EINVAL);
+ }
+
+ // border is not implemented correctly at the moment, see ticket #10078
+ if (avctx->width % 16) {
+ av_log(avctx, AV_LOG_ERROR, "width must be a multiple of 16\n");
+ return AVERROR_PATCHWELCOME;
+ }
+
+ switch (avctx->pix_fmt) {
+ case AV_PIX_FMT_YUV420P:
+ avctx->codec_tag = MKTAG('S','H','Q','0');
+ break;
+ case AV_PIX_FMT_YUV422P:
+ avctx->codec_tag = MKTAG('S','H','Q','2');
+ break;
+ case AV_PIX_FMT_YUV444P:
+ avctx->codec_tag = MKTAG('S','H','Q','4');
+ break;
+ default:
+ av_assert0(0);
+ }
+
+ s->min_qcoeff = -2048;
+ s->max_qcoeff = 2047;
+
+ s->intra_ac_vlc_length =
+ s->intra_ac_vlc_last_length =
+ s->intra_chroma_ac_vlc_length =
+ s->intra_chroma_ac_vlc_last_length = uni_speedhq_ac_vlc_len;
+
+ s->y_dc_scale_table =
+ s->c_dc_scale_table = ff_mpeg12_dc_scale_table[3];
+
+ ret = ff_mpv_encode_init(avctx);
+ if (ret < 0)
+ return ret;
+
+ ff_thread_once(&init_static_once, speedhq_init_static_data);
+
+ return 0;
+}
+
const FFCodec ff_speedhq_encoder = {
.p.name = "speedhq",
CODEC_LONG_NAME("NewTek SpeedHQ"),
More information about the ffmpeg-cvslog
mailing list