ffmpeg-cvslog
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
July 2020
- 2 participants
- 816 discussions
ffmpeg | branch: master | Mark Thompson <sw(a)jkqxz.net> | Thu Jul 30 22:32:00 2020 +0100| [11a2d05b3fa977ea9437725531a4875b735c977e] | committer: Mark Thompson
libsvtav1: Fix the documentation to match the actual options
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=11a2d05b3fa977ea9…
---
doc/encoders.texi | 48 ++++++++++++++++++++++++++++++++++++------------
libavcodec/libsvtav1.c | 6 +++---
2 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/doc/encoders.texi b/doc/encoders.texi
index af7d2ba983..2f5457fb26 100644
--- a/doc/encoders.texi
+++ b/doc/encoders.texi
@@ -1687,7 +1687,7 @@ Enable smooth interintra mode. Default is true.
@end table
-@section libsvt-av1
+@section libsvtav1
SVT-AV1 encoder wrapper.
@@ -1697,31 +1697,55 @@ You need to explicitly configure the build with @code{--enable-libsvtav1}.
@subsection Options
@table @option
+@item profile
+Set the encoding profile.
+
+@item level
+Set the operating point level.
+
+@item tier
+Set the operating point tier.
+
+@item rc
+Set the rate control mode to use.
+
+Possible modes:
+@table @option
+@item cqp
+Constant quantizer: use fixed values of qindex (dependent on the frame type)
+throughout the stream. This mode is the default.
+
+@item vbr
+Variable bitrate: use a target bitrate for the whole stream.
+
+@item cvbr
+Constrained variable bitrate: use a target bitrate for each GOP.
+@end table
+
@item qmax
-Sets the maximum quantizer to use when using bitrate mode.
+Set the maximum quantizer to use when using a bitrate mode.
@item qmin
-Sets the minimum quantizer to use when using bitrate mode.
+Set the minimum quantizer to use when using a bitrate mode.
@item qp
-Uses quantizer mode to encode at the given quantizer (0-63).
+Set the quantizer used in cqp rate control mode (0-63).
-@item hielevel
+@item sc_detection
Enable scene change detection.
@item la_depth
Set number of frames to look ahead (0-120).
@item preset
-Set encoding preset.
+Set the quality-speed tradeoff, in the range 0 to 8. Higher values are
+faster but lower quality. Defaults to 8 (highest speed).
-@item tier
-
-@item tile-rows
-Selects how many rows of tiles to encode with (0-6).
+@item tile_rows
+Set log2 of the number of rows of tiles to use (0-6).
-@item tile-columns
-Selects how many columns of tiles to encode with (0-4).
+@item tile_columns
+Set log2 of the number of columns of tiles to use (0-4).
@end table
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 13d3adc0f8..40942c6f6a 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -489,7 +489,7 @@ static const AVOption options[] = {
{ "preset", "Encoding preset [0, 8]",
OFFSET(enc_mode), AV_OPT_TYPE_INT, { .i64 = MAX_ENC_PRESET }, 0, MAX_ENC_PRESET, VE },
- { "tier", "Set tier (general_tier_flag)", OFFSET(tier),
+ { "tier", "Set operating point tier", OFFSET(tier),
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE, "tier" },
{ "main", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, VE, "tier" },
{ "high", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, VE, "tier" },
@@ -526,11 +526,11 @@ static const AVOption options[] = {
{ "rc", "Bit rate control mode", OFFSET(rc_mode),
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 3, VE , "rc"},
- { "cqp", "Const Quantization Parameter", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, VE, "rc" },
+ { "cqp", "Constant quantizer", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, VE, "rc" },
{ "vbr", "Variable Bit Rate, use a target bitrate for the entire stream", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, INT_MIN, INT_MAX, VE, "rc" },
{ "cvbr", "Constrained Variable Bit Rate, use a target bitrate for each GOP", 0, AV_OPT_TYPE_CONST,{ .i64 = 2 }, INT_MIN, INT_MAX, VE, "rc" },
- { "qp", "QP value for intra frames", OFFSET(qp),
+ { "qp", "Quantizer to use with cqp rate control mode", OFFSET(qp),
AV_OPT_TYPE_INT, { .i64 = 50 }, 0, 63, VE },
{ "sc_detection", "Scene change detection", OFFSET(scd),
1
0
ffmpeg | branch: master | Mark Thompson <sw(a)jkqxz.net> | Thu Jul 30 22:31:59 2020 +0100| [ad7aa1e8e7e60d3db1264c16c8cd891782ab8887] | committer: Mark Thompson
libsvtav1: Use _ rather than - in options
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ad7aa1e8e7e60d3db…
---
libavcodec/libsvtav1.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 0c951286c7..13d3adc0f8 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -536,8 +536,8 @@ static const AVOption options[] = {
{ "sc_detection", "Scene change detection", OFFSET(scd),
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },
- { "tile-columns", "Log2 of number of tile columns to use", OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, VE},
- { "tile-rows", "Log2 of number of tile rows to use", OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 6, VE},
+ { "tile_columns", "Log2 of number of tile columns to use", OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, VE},
+ { "tile_rows", "Log2 of number of tile rows to use", OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 6, VE},
{NULL},
};
1
0
ffmpeg | branch: master | Mark Thompson <sw(a)jkqxz.net> | Thu Jul 30 22:31:58 2020 +0100| [30a4bdbc1f4853c1deb2cd551d8c661f7b067503] | committer: Mark Thompson
libsvtav1: Rename without a _
The external library is called libsvtav1, so use this name everywhere.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=30a4bdbc1f4853c1d…
---
configure | 2 +-
libavcodec/Makefile | 2 +-
libavcodec/allcodecs.c | 2 +-
libavcodec/{libsvt_av1.c => libsvtav1.c} | 8 ++++----
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/configure b/configure
index 169f23e17f..b137669dd3 100755
--- a/configure
+++ b/configure
@@ -3245,7 +3245,7 @@ libshine_encoder_select="audio_frame_queue"
libspeex_decoder_deps="libspeex"
libspeex_encoder_deps="libspeex"
libspeex_encoder_select="audio_frame_queue"
-libsvt_av1_encoder_deps="libsvtav1"
+libsvtav1_encoder_deps="libsvtav1"
libtheora_encoder_deps="libtheora"
libtwolame_encoder_deps="libtwolame"
libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 9d4d52d048..98b388e260 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -1026,7 +1026,7 @@ OBJS-$(CONFIG_LIBRAV1E_ENCODER) += librav1e.o
OBJS-$(CONFIG_LIBSHINE_ENCODER) += libshine.o
OBJS-$(CONFIG_LIBSPEEX_DECODER) += libspeexdec.o
OBJS-$(CONFIG_LIBSPEEX_ENCODER) += libspeexenc.o
-OBJS-$(CONFIG_LIBSVT_AV1_ENCODER) += libsvt_av1.o
+OBJS-$(CONFIG_LIBSVTAV1_ENCODER) += libsvtav1.o
OBJS-$(CONFIG_LIBTHEORA_ENCODER) += libtheoraenc.o
OBJS-$(CONFIG_LIBTWOLAME_ENCODER) += libtwolame.o
OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 80142899fe..2e291f749f 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -727,7 +727,7 @@ extern AVCodec ff_librsvg_decoder;
extern AVCodec ff_libshine_encoder;
extern AVCodec ff_libspeex_encoder;
extern AVCodec ff_libspeex_decoder;
-extern AVCodec ff_libsvt_av1_encoder;
+extern AVCodec ff_libsvtav1_encoder;
extern AVCodec ff_libtheora_encoder;
extern AVCodec ff_libtwolame_encoder;
extern AVCodec ff_libvo_amrwbenc_encoder;
diff --git a/libavcodec/libsvt_av1.c b/libavcodec/libsvtav1.c
similarity index 99%
rename from libavcodec/libsvt_av1.c
rename to libavcodec/libsvtav1.c
index c7ae5f9691..0c951286c7 100644
--- a/libavcodec/libsvt_av1.c
+++ b/libavcodec/libsvtav1.c
@@ -543,7 +543,7 @@ static const AVOption options[] = {
};
static const AVClass class = {
- .class_name = "libsvt_av1",
+ .class_name = "libsvtav1",
.item_name = av_default_item_name,
.option = options,
.version = LIBAVUTIL_VERSION_INT,
@@ -557,8 +557,8 @@ static const AVCodecDefault eb_enc_defaults[] = {
{ NULL },
};
-AVCodec ff_libsvt_av1_encoder = {
- .name = "libsvt_av1",
+AVCodec ff_libsvtav1_encoder = {
+ .name = "libsvtav1",
.long_name = NULL_IF_CONFIG_SMALL("SVT-AV1(Scalable Video Technology for AV1) encoder"),
.priv_data_size = sizeof(SvtContext),
.type = AVMEDIA_TYPE_VIDEO,
@@ -573,5 +573,5 @@ AVCodec ff_libsvt_av1_encoder = {
.priv_class = &class,
.defaults = eb_enc_defaults,
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
- .wrapper_name = "libsvt_av1",
+ .wrapper_name = "libsvtav1",
};
1
0
ffmpeg | branch: master | James Almer <jamrial(a)gmail.com> | Sat Jul 25 00:10:38 2020 -0300| [134a48a88023a02f941afdd7d21c34897ade4d08] | committer: James Almer
tests/imgutils: test the output of av_image_fill_* functions
Signed-off-by: James Almer <jamrial(a)gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=134a48a88023a02f9…
---
libavutil/tests/imgutils.c | 38 ++++++++++
tests/ref/fate/imgutils | 183 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 221 insertions(+)
diff --git a/libavutil/tests/imgutils.c b/libavutil/tests/imgutils.c
index 571045c857..748bd6c9d2 100644
--- a/libavutil/tests/imgutils.c
+++ b/libavutil/tests/imgutils.c
@@ -22,6 +22,7 @@
int main(void)
{
+ const AVPixFmtDescriptor *desc = NULL;
int64_t x, y;
for (y = -1; y<UINT_MAX; y+= y/2 + 1) {
@@ -31,6 +32,43 @@ int main(void)
}
printf("\n");
}
+ printf("\n");
+
+ while (desc = av_pix_fmt_desc_next(desc)) {
+ uint8_t *data[4];
+ size_t sizes[4];
+ ptrdiff_t linesizes1[4], offsets[3] = { 0 };
+ int i, total_size, w = 64, h = 48, linesizes[4];
+ enum AVPixelFormat pix_fmt = av_pix_fmt_desc_get_id(desc);
+
+ if (av_image_fill_linesizes(linesizes, pix_fmt, w) < 0)
+ continue;
+ for (i = 0; i < 4; i++)
+ linesizes1[i] = linesizes[i];
+ if (av_image_fill_plane_sizes(sizes, pix_fmt, h, linesizes1) < 0)
+ continue;
+ total_size = av_image_fill_pointers(data, pix_fmt, h, (void *)1, linesizes);
+ if (total_size < 0)
+ continue;
+ printf("%-16s", desc->name);
+ for (i = 0; i < 4 && data[i]; i++);
+ printf("planes: %d", i);
+ // Test the output of av_image_fill_linesizes()
+ printf(", linesizes:");
+ for (i = 0; i < 4; i++)
+ printf(" %3d", linesizes[i]);
+ // Test the output of av_image_fill_plane_sizes()
+ printf(", plane_sizes:");
+ for (i = 0; i < 4; i++)
+ printf(" %5"SIZE_SPECIFIER, sizes[i]);
+ // Test the output of av_image_fill_pointers()
+ for (i = 0; i < 3 && data[i + 1]; i++)
+ offsets[i] = data[i + 1] - data[i];
+ printf(", plane_offsets:");
+ for (i = 0; i < 3; i++)
+ printf(" %5"PTRDIFF_SPECIFIER, offsets[i]);
+ printf(", total_size: %d\n", total_size);
+ }
return 0;
}
diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils
index aba482221f..c968ea0e85 100644
--- a/tests/ref/fate/imgutils
+++ b/tests/ref/fate/imgutils
@@ -53,3 +53,186 @@
0000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000
+
+yuv420p planes: 3, linesizes: 64 32 32 0, plane_sizes: 3072 768 768 0, plane_offsets: 3072 768 0, total_size: 4608
+yuyv422 planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+rgb24 planes: 1, linesizes: 192 0 0 0, plane_sizes: 9216 0 0 0, plane_offsets: 0 0 0, total_size: 9216
+bgr24 planes: 1, linesizes: 192 0 0 0, plane_sizes: 9216 0 0 0, plane_offsets: 0 0 0, total_size: 9216
+yuv422p planes: 3, linesizes: 64 32 32 0, plane_sizes: 3072 1536 1536 0, plane_offsets: 3072 1536 0, total_size: 6144
+yuv444p planes: 3, linesizes: 64 64 64 0, plane_sizes: 3072 3072 3072 0, plane_offsets: 3072 3072 0, total_size: 9216
+yuv410p planes: 3, linesizes: 64 16 16 0, plane_sizes: 3072 192 192 0, plane_offsets: 3072 192 0, total_size: 3456
+yuv411p planes: 3, linesizes: 64 16 16 0, plane_sizes: 3072 768 768 0, plane_offsets: 3072 768 0, total_size: 4608
+gray planes: 2, linesizes: 64 0 0 0, plane_sizes: 3072 1024 0 0, plane_offsets: 3072 0 0, total_size: 4096
+monow planes: 1, linesizes: 8 0 0 0, plane_sizes: 384 0 0 0, plane_offsets: 0 0 0, total_size: 384
+monob planes: 1, linesizes: 8 0 0 0, plane_sizes: 384 0 0 0, plane_offsets: 0 0 0, total_size: 384
+pal8 planes: 2, linesizes: 64 0 0 0, plane_sizes: 3072 1024 0 0, plane_offsets: 3072 0 0, total_size: 4096
+yuvj420p planes: 3, linesizes: 64 32 32 0, plane_sizes: 3072 768 768 0, plane_offsets: 3072 768 0, total_size: 4608
+yuvj422p planes: 3, linesizes: 64 32 32 0, plane_sizes: 3072 1536 1536 0, plane_offsets: 3072 1536 0, total_size: 6144
+yuvj444p planes: 3, linesizes: 64 64 64 0, plane_sizes: 3072 3072 3072 0, plane_offsets: 3072 3072 0, total_size: 9216
+uyvy422 planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+uyyvyy411 planes: 1, linesizes: 96 0 0 0, plane_sizes: 4608 0 0 0, plane_offsets: 0 0 0, total_size: 4608
+bgr8 planes: 2, linesizes: 64 0 0 0, plane_sizes: 3072 1024 0 0, plane_offsets: 3072 0 0, total_size: 4096
+bgr4 planes: 1, linesizes: 32 0 0 0, plane_sizes: 1536 0 0 0, plane_offsets: 0 0 0, total_size: 1536
+bgr4_byte planes: 2, linesizes: 64 0 0 0, plane_sizes: 3072 1024 0 0, plane_offsets: 3072 0 0, total_size: 4096
+rgb8 planes: 2, linesizes: 64 0 0 0, plane_sizes: 3072 1024 0 0, plane_offsets: 3072 0 0, total_size: 4096
+rgb4 planes: 1, linesizes: 32 0 0 0, plane_sizes: 1536 0 0 0, plane_offsets: 0 0 0, total_size: 1536
+rgb4_byte planes: 2, linesizes: 64 0 0 0, plane_sizes: 3072 1024 0 0, plane_offsets: 3072 0 0, total_size: 4096
+nv12 planes: 2, linesizes: 64 64 0 0, plane_sizes: 3072 1536 0 0, plane_offsets: 3072 0 0, total_size: 4608
+nv21 planes: 2, linesizes: 64 64 0 0, plane_sizes: 3072 1536 0 0, plane_offsets: 3072 0 0, total_size: 4608
+argb planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+rgba planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+abgr planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+bgra planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+gray16be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gray16le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+yuv440p planes: 3, linesizes: 64 64 64 0, plane_sizes: 3072 1536 1536 0, plane_offsets: 3072 1536 0, total_size: 6144
+yuvj440p planes: 3, linesizes: 64 64 64 0, plane_sizes: 3072 1536 1536 0, plane_offsets: 3072 1536 0, total_size: 6144
+yuva420p planes: 4, linesizes: 64 32 32 64, plane_sizes: 3072 768 768 3072, plane_offsets: 3072 768 768, total_size: 7680
+rgb48be planes: 1, linesizes: 384 0 0 0, plane_sizes: 18432 0 0 0, plane_offsets: 0 0 0, total_size: 18432
+rgb48le planes: 1, linesizes: 384 0 0 0, plane_sizes: 18432 0 0 0, plane_offsets: 0 0 0, total_size: 18432
+rgb565be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+rgb565le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+rgb555be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+rgb555le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr565be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr565le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr555be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr555le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+yuv420p16le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p16be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv422p16le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv422p16be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv444p16le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p16be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+rgb444le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+rgb444be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr444le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr444be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+ya8 planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bgr48be planes: 1, linesizes: 384 0 0 0, plane_sizes: 18432 0 0 0, plane_offsets: 0 0 0, total_size: 18432
+bgr48le planes: 1, linesizes: 384 0 0 0, plane_sizes: 18432 0 0 0, plane_offsets: 0 0 0, total_size: 18432
+yuv420p9be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p9le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p10be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p10le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv422p10be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv422p10le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv444p9be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p9le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p10be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p10le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv422p9be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv422p9le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+gbrp planes: 3, linesizes: 64 64 64 0, plane_sizes: 3072 3072 3072 0, plane_offsets: 3072 3072 0, total_size: 9216
+gbrp9be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp9le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp10be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp10le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp16be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp16le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuva422p planes: 4, linesizes: 64 32 32 64, plane_sizes: 3072 1536 1536 3072, plane_offsets: 3072 1536 1536, total_size: 9216
+yuva444p planes: 4, linesizes: 64 64 64 64, plane_sizes: 3072 3072 3072 3072, plane_offsets: 3072 3072 3072, total_size: 12288
+yuva420p9be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 1536 1536 6144, plane_offsets: 6144 1536 1536, total_size: 15360
+yuva420p9le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 1536 1536 6144, plane_offsets: 6144 1536 1536, total_size: 15360
+yuva422p9be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva422p9le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva444p9be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+yuva444p9le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+yuva420p10be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 1536 1536 6144, plane_offsets: 6144 1536 1536, total_size: 15360
+yuva420p10le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 1536 1536 6144, plane_offsets: 6144 1536 1536, total_size: 15360
+yuva422p10be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva422p10le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva444p10be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+yuva444p10le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+yuva420p16be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 1536 1536 6144, plane_offsets: 6144 1536 1536, total_size: 15360
+yuva420p16le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 1536 1536 6144, plane_offsets: 6144 1536 1536, total_size: 15360
+yuva422p16be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva422p16le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva444p16be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+yuva444p16le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+xyz12le planes: 1, linesizes: 384 0 0 0, plane_sizes: 18432 0 0 0, plane_offsets: 0 0 0, total_size: 18432
+xyz12be planes: 1, linesizes: 384 0 0 0, plane_sizes: 18432 0 0 0, plane_offsets: 0 0 0, total_size: 18432
+nv16 planes: 2, linesizes: 64 64 0 0, plane_sizes: 3072 3072 0 0, plane_offsets: 3072 0 0, total_size: 6144
+nv20le planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288
+nv20be planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 6144 0 0, plane_offsets: 6144 0 0, total_size: 12288
+rgba64be planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576
+rgba64le planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576
+bgra64be planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576
+bgra64le planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576
+yvyu422 planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+ya16be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+ya16le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+gbrap planes: 4, linesizes: 64 64 64 64, plane_sizes: 3072 3072 3072 3072, plane_offsets: 3072 3072 3072, total_size: 12288
+gbrap16be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+gbrap16le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+0rgb planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+rgb0 planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+0bgr planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+bgr0 planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+yuv420p12be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p12le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p14be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv420p14le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216
+yuv422p12be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv422p12le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv422p14be planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv422p14le planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv444p12be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p12le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p14be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuv444p14le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp12be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp12le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp14be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+gbrp14le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432
+yuvj411p planes: 3, linesizes: 64 16 16 0, plane_sizes: 3072 768 768 0, plane_offsets: 3072 768 0, total_size: 4608
+bayer_bggr8 planes: 1, linesizes: 64 0 0 0, plane_sizes: 3072 0 0 0, plane_offsets: 0 0 0, total_size: 3072
+bayer_rggb8 planes: 1, linesizes: 64 0 0 0, plane_sizes: 3072 0 0 0, plane_offsets: 0 0 0, total_size: 3072
+bayer_gbrg8 planes: 1, linesizes: 64 0 0 0, plane_sizes: 3072 0 0 0, plane_offsets: 0 0 0, total_size: 3072
+bayer_grbg8 planes: 1, linesizes: 64 0 0 0, plane_sizes: 3072 0 0 0, plane_offsets: 0 0 0, total_size: 3072
+bayer_bggr16le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_bggr16be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_rggb16le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_rggb16be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_gbrg16le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_gbrg16be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_grbg16le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+bayer_grbg16be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+yuv440p10le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv440p10be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv440p12le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+yuv440p12be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288
+ayuv64le planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576
+ayuv64be planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576
+p010le planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 3072 0 0, plane_offsets: 6144 0 0, total_size: 9216
+p010be planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 3072 0 0, plane_offsets: 6144 0 0, total_size: 9216
+gbrap12be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+gbrap12le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+gbrap10be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+gbrap10le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+gray12be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gray12le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gray10be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gray10le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+p016le planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 3072 0 0, plane_offsets: 6144 0 0, total_size: 9216
+p016be planes: 2, linesizes: 128 128 0 0, plane_sizes: 6144 3072 0 0, plane_offsets: 6144 0 0, total_size: 9216
+gray9be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gray9le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gbrpf32be planes: 3, linesizes: 256 256 256 0, plane_sizes: 12288 12288 12288 0, plane_offsets: 12288 12288 0, total_size: 36864
+gbrpf32le planes: 3, linesizes: 256 256 256 0, plane_sizes: 12288 12288 12288 0, plane_offsets: 12288 12288 0, total_size: 36864
+gbrapf32be planes: 4, linesizes: 256 256 256 256, plane_sizes: 12288 12288 12288 12288, plane_offsets: 12288 12288 12288, total_size: 49152
+gbrapf32le planes: 4, linesizes: 256 256 256 256, plane_sizes: 12288 12288 12288 12288, plane_offsets: 12288 12288 12288, total_size: 49152
+gray14be planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+gray14le planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144
+grayf32be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+grayf32le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+yuva422p12be planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva422p12le planes: 4, linesizes: 128 64 64 128, plane_sizes: 6144 3072 3072 6144, plane_offsets: 6144 3072 3072, total_size: 18432
+yuva444p12be planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+yuva444p12le planes: 4, linesizes: 128 128 128 128, plane_sizes: 6144 6144 6144 6144, plane_offsets: 6144 6144 6144, total_size: 24576
+nv24 planes: 2, linesizes: 64 128 0 0, plane_sizes: 3072 6144 0 0, plane_offsets: 3072 0 0, total_size: 9216
+nv42 planes: 2, linesizes: 64 128 0 0, plane_sizes: 3072 6144 0 0, plane_offsets: 3072 0 0, total_size: 9216
+y210be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+y210le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+x2rgb10le planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
+x2rgb10be planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288
1
0
ffmpeg | branch: master | Zane van Iperen <zane(a)zanevaniperen.com> | Wed Jul 29 22:06:50 2020 +1000| [be3c10d5517824318254a99007c7b1c07559c264] | committer: Zane van Iperen
avformat/apm: fix APM_FILE_HEADER_SIZE value
Value was incorrectly changed in 3bf1be210150b435c51c7c8eb8fd05a1fca08814.
Signed-off-by: Zane van Iperen <zane(a)zanevaniperen.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=be3c10d5517824318…
---
libavformat/apm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavformat/apm.c b/libavformat/apm.c
index 4c5844c83e..38a0f6382a 100644
--- a/libavformat/apm.c
+++ b/libavformat/apm.c
@@ -26,7 +26,7 @@
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
-#define APM_FILE_HEADER_SIZE 18
+#define APM_FILE_HEADER_SIZE 20
#define APM_FILE_EXTRADATA_SIZE 80
#define APM_EXTRADATA_SIZE 28
@@ -287,7 +287,7 @@ static int apm_write_trailer(AVFormatContext *s)
int64_t file_size, data_size;
file_size = avio_tell(s->pb);
- data_size = file_size - (APM_FILE_HEADER_SIZE + 2 + APM_FILE_EXTRADATA_SIZE);
+ data_size = file_size - (APM_FILE_HEADER_SIZE + APM_FILE_EXTRADATA_SIZE);
if (file_size >= UINT32_MAX) {
av_log(s, AV_LOG_ERROR,
1
0
avcodec/options_table: make AVCodecContext->level search for child constants
by James Almer 29 Jul '20
by James Almer 29 Jul '20
29 Jul '20
ffmpeg | branch: master | James Almer <jamrial(a)gmail.com> | Wed Jul 29 19:08:17 2020 -0300| [8a3f561c341fb2c2b7667c38a6801e2633257577] | committer: James Almer
avcodec/options_table: make AVCodecContext->level search for child constants
This change makes it possible for child encoders to define custom level
option names which can be used for setting the AVCodecContext->level.
Based on 337fe4bcc2
Reviewed-by: jkqxz
Signed-off-by: James Almer <jamrial(a)gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8a3f561c341fb2c2b…
---
libavcodec/options_table.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h
index 8ba137f51e..1d0db1b5a4 100644
--- a/libavcodec/options_table.h
+++ b/libavcodec/options_table.h
@@ -264,8 +264,8 @@ static const AVOption avcodec_options[] = {
{"profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, {.i64 = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E|CC, "avctx.profile"},
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "avctx.profile"},
{"main10", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_HEVC_MAIN_10 }, INT_MIN, INT_MAX, V|E, "avctx.profile"},
-{"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"},
-{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"},
+{"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E|CC, "avctx.level"},
+{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "avctx.level"},
{"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|A|D},
#if FF_API_PRIVATE_OPT
{"skip_threshold", "frame skip threshold", OFFSET(frame_skip_threshold), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E},
1
0
ffmpeg | branch: master | Gautam Ramakrishnan <gautamramk(a)gmail.com> | Wed Jul 29 21:37:11 2020 +0530| [8821df6fcfc0a3b75c7079617f5917c031d0a63c] | committer: Michael Niedermayer
libavcodec/pgxdec Fix pix format selection error
This patch makes the pgx decoder select the correct
byte order instead of selecting big endian format for
16 bit images.
Signed-off-by: Michael Niedermayer <michael(a)niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8821df6fcfc0a3b75…
---
libavcodec/pgxdec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavcodec/pgxdec.c b/libavcodec/pgxdec.c
index 93b9f4e7a0..a72d6fe6fe 100644
--- a/libavcodec/pgxdec.c
+++ b/libavcodec/pgxdec.c
@@ -137,7 +137,7 @@ static int pgx_decode_frame(AVCodecContext *avctx, void *data,
avctx->pix_fmt = AV_PIX_FMT_GRAY8;
bpp = 8;
} else if (depth <= 16) {
- avctx->pix_fmt = AV_PIX_FMT_GRAY16BE;
+ avctx->pix_fmt = AV_PIX_FMT_GRAY16;
bpp = 16;
} else {
av_log(avctx, AV_LOG_ERROR, "Maximum depth of 16 bits supported.\n");
1
0
ffmpeg | branch: master | Gautam Ramakrishnan <gautamramk(a)gmail.com> | Wed Jul 29 21:37:10 2020 +0530| [9d302efdf2bc1b48896e34574f5a675c6e441a81] | committer: Michael Niedermayer
libavcodec/j2kenc: Encoding up to 16 bits
This patch allows the JPEG2000 encoder to
encode images to up to 16 bits.
Signed-off-by: Michael Niedermayer <michael(a)niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9d302efdf2bc1b488…
---
libavcodec/j2kenc.c | 99 ++++++++++++++++++++++++++++++-----------------------
1 file changed, 57 insertions(+), 42 deletions(-)
diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c
index 38643c9a28..5ebc1f3a99 100644
--- a/libavcodec/j2kenc.c
+++ b/libavcodec/j2kenc.c
@@ -298,7 +298,7 @@ static int put_siz(Jpeg2000EncoderContext *s)
bytestream_put_be16(&s->buf, s->ncomponents); // CSiz
for (i = 0; i < s->ncomponents; i++){ // Ssiz_i XRsiz_i, YRsiz_i
- bytestream_put_byte(&s->buf, 7);
+ bytestream_put_byte(&s->buf, s->cbps[i] - 1);
bytestream_put_byte(&s->buf, i?1<<s->chroma_shift[0]:1);
bytestream_put_byte(&s->buf, i?1<<s->chroma_shift[1]:1);
}
@@ -447,43 +447,49 @@ static int init_tiles(Jpeg2000EncoderContext *s)
return 0;
}
-static void copy_frame(Jpeg2000EncoderContext *s)
-{
- int tileno, compno, i, y, x;
- uint8_t *line;
- for (tileno = 0; tileno < s->numXtiles * s->numYtiles; tileno++){
- Jpeg2000Tile *tile = s->tile + tileno;
- if (s->planar){
- for (compno = 0; compno < s->ncomponents; compno++){
- Jpeg2000Component *comp = tile->comp + compno;
- int *dst = comp->i_data;
- line = s->picture->data[compno]
- + comp->coord[1][0] * s->picture->linesize[compno]
- + comp->coord[0][0];
- for (y = comp->coord[1][0]; y < comp->coord[1][1]; y++){
- uint8_t *ptr = line;
- for (x = comp->coord[0][0]; x < comp->coord[0][1]; x++)
- *dst++ = *ptr++ - (1 << 7);
- line += s->picture->linesize[compno];
- }
- }
- } else{
- line = s->picture->data[0] + tile->comp[0].coord[1][0] * s->picture->linesize[0]
- + tile->comp[0].coord[0][0] * s->ncomponents;
-
- i = 0;
- for (y = tile->comp[0].coord[1][0]; y < tile->comp[0].coord[1][1]; y++){
- uint8_t *ptr = line;
- for (x = tile->comp[0].coord[0][0]; x < tile->comp[0].coord[0][1]; x++, i++){
- for (compno = 0; compno < s->ncomponents; compno++){
- tile->comp[compno].i_data[i] = *ptr++ - (1 << 7);
- }
- }
- line += s->picture->linesize[0];
- }
- }
+#define COPY_FRAME(D, PIXEL) \
+ static void copy_frame_ ##D(Jpeg2000EncoderContext *s) \
+ { \
+ int tileno, compno, i, y, x; \
+ PIXEL *line; \
+ for (tileno = 0; tileno < s->numXtiles * s->numYtiles; tileno++){ \
+ Jpeg2000Tile *tile = s->tile + tileno; \
+ if (s->planar){ \
+ for (compno = 0; compno < s->ncomponents; compno++){ \
+ Jpeg2000Component *comp = tile->comp + compno; \
+ int *dst = comp->i_data; \
+ int cbps = s->cbps[compno]; \
+ line = (PIXEL*)s->picture->data[compno] \
+ + comp->coord[1][0] * (s->picture->linesize[compno] / sizeof(PIXEL)) \
+ + comp->coord[0][0]; \
+ for (y = comp->coord[1][0]; y < comp->coord[1][1]; y++){ \
+ PIXEL *ptr = line; \
+ for (x = comp->coord[0][0]; x < comp->coord[0][1]; x++) \
+ *dst++ = *ptr++ - (1 << (cbps - 1)); \
+ line += s->picture->linesize[compno] / sizeof(PIXEL); \
+ } \
+ } \
+ } else{ \
+ line = (PIXEL*)s->picture->data[0] + tile->comp[0].coord[1][0] * (s->picture->linesize[0] / sizeof(PIXEL)) \
+ + tile->comp[0].coord[0][0] * s->ncomponents; \
+ \
+ i = 0; \
+ for (y = tile->comp[0].coord[1][0]; y < tile->comp[0].coord[1][1]; y++){ \
+ PIXEL *ptr = line; \
+ for (x = tile->comp[0].coord[0][0]; x < tile->comp[0].coord[0][1]; x++, i++){ \
+ for (compno = 0; compno < s->ncomponents; compno++){ \
+ int cbps = s->cbps[compno]; \
+ tile->comp[compno].i_data[i] = *ptr++ - (1 << (cbps - 1)); \
+ } \
+ } \
+ line += s->picture->linesize[0] / sizeof(PIXEL); \
+ } \
+ } \
+ } \
}
-}
+
+COPY_FRAME(8, uint8_t)
+COPY_FRAME(16, uint16_t)
static void init_quantization(Jpeg2000EncoderContext *s)
{
@@ -1015,7 +1021,11 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
s->lambda = s->picture->quality * LAMBDA_SCALE;
- copy_frame(s);
+ if (avctx->pix_fmt == AV_PIX_FMT_BGR48 || avctx->pix_fmt == AV_PIX_FMT_GRAY16)
+ copy_frame_16(s);
+ else
+ copy_frame_8(s);
+
reinit(s);
if (s->format == CODEC_JP2) {
@@ -1180,12 +1190,16 @@ FF_ENABLE_DEPRECATION_WARNINGS
s->width = avctx->width;
s->height = avctx->height;
- for (i = 0; i < 3; i++)
- s->cbps[i] = 8;
+ for (i = 0; i < 3; i++) {
+ if (avctx->pix_fmt == AV_PIX_FMT_GRAY16 || avctx->pix_fmt == AV_PIX_FMT_RGB48)
+ s->cbps[i] = 16;
+ else
+ s->cbps[i] = 8;
+ }
- if (avctx->pix_fmt == AV_PIX_FMT_RGB24){
+ if (avctx->pix_fmt == AV_PIX_FMT_RGB24 || avctx->pix_fmt == AV_PIX_FMT_RGB48){
s->ncomponents = 3;
- } else if (avctx->pix_fmt == AV_PIX_FMT_GRAY8 || avctx->pix_fmt == AV_PIX_FMT_PAL8){
+ } else if (avctx->pix_fmt == AV_PIX_FMT_GRAY8 || avctx->pix_fmt == AV_PIX_FMT_PAL8 || avctx->pix_fmt == AV_PIX_FMT_GRAY16){
s->ncomponents = 1;
} else{ // planar YUV
s->planar = 1;
@@ -1255,6 +1269,7 @@ AVCodec ff_jpeg2000_encoder = {
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
AV_PIX_FMT_PAL8,
+ AV_PIX_FMT_RGB48, AV_PIX_FMT_GRAY16,
AV_PIX_FMT_NONE
},
.priv_class = &j2k_class,
1
0
ffmpeg | branch: master | Shiyou Yin <yinshiyou-hf(a)loongson.cn> | Wed Jul 29 18:11:01 2020 +0800| [bd4f37f2ebf5870083c2343cbed6846aee63e6a5] | committer: Michael Niedermayer
avcodec/mips: Fix segfault in imdct36_mips_float.
'li.s' is a synthesized instruction, it does not work properly
when compiled with clang on mips, and A segfault occurred.
Signed-off-by: Michael Niedermayer <michael(a)niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bd4f37f2ebf587008…
---
libavcodec/mips/aacpsdsp_mips.c | 13 +-
libavcodec/mips/aacpsy_mips.h | 14 +-
libavcodec/mips/fft_mips.c | 12 +-
libavcodec/mips/mpegaudiodsp_mips_float.c | 492 +++++++++++++++---------------
4 files changed, 264 insertions(+), 267 deletions(-)
diff --git a/libavcodec/mips/aacpsdsp_mips.c b/libavcodec/mips/aacpsdsp_mips.c
index ef47e31a9e..f63541330d 100644
--- a/libavcodec/mips/aacpsdsp_mips.c
+++ b/libavcodec/mips/aacpsdsp_mips.c
@@ -293,16 +293,17 @@ static void ps_decorrelate_mips(float (*out)[2], float (*delay)[2],
float phi_fract0 = phi_fract[0];
float phi_fract1 = phi_fract[1];
float temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9;
+ float f1, f2, f3;
float *p_delay_end = (p_delay + (len << 1));
/* merged 2 loops */
+ f1 = 0.65143905753106;
+ f2 = 0.56471812200776;
+ f3 = 0.48954165955695;
__asm__ volatile(
".set push \n\t"
".set noreorder \n\t"
- "li.s %[ag0], 0.65143905753106 \n\t"
- "li.s %[ag1], 0.56471812200776 \n\t"
- "li.s %[ag2], 0.48954165955695 \n\t"
"mul.s %[ag0], %[ag0], %[g_decay_slope] \n\t"
"mul.s %[ag1], %[ag1], %[g_decay_slope] \n\t"
"mul.s %[ag2], %[ag2], %[g_decay_slope] \n\t"
@@ -378,10 +379,10 @@ static void ps_decorrelate_mips(float (*out)[2], float (*delay)[2],
[temp3]"=&f"(temp3), [temp4]"=&f"(temp4), [temp5]"=&f"(temp5),
[temp6]"=&f"(temp6), [temp7]"=&f"(temp7), [temp8]"=&f"(temp8),
[temp9]"=&f"(temp9), [p_delay]"+r"(p_delay), [p_ap_delay]"+r"(p_ap_delay),
- [p_Q_fract]"+r"(p_Q_fract), [p_t_gain]"+r"(p_t_gain), [p_out]"+r"(p_out),
- [ag0]"=&f"(ag0), [ag1]"=&f"(ag1), [ag2]"=&f"(ag2)
+ [p_Q_fract]"+r"(p_Q_fract), [p_t_gain]"+r"(p_t_gain), [p_out]"+r"(p_out)
: [phi_fract0]"f"(phi_fract0), [phi_fract1]"f"(phi_fract1),
- [p_delay_end]"r"(p_delay_end), [g_decay_slope]"f"(g_decay_slope)
+ [p_delay_end]"r"(p_delay_end), [g_decay_slope]"f"(g_decay_slope),
+ [ag0]"f"(f1), [ag1]"f"(f2), [ag2]"f"(f3)
: "memory"
);
}
diff --git a/libavcodec/mips/aacpsy_mips.h b/libavcodec/mips/aacpsy_mips.h
index a1fe5ccea9..7d27d32f18 100644
--- a/libavcodec/mips/aacpsy_mips.h
+++ b/libavcodec/mips/aacpsy_mips.h
@@ -135,11 +135,11 @@ static void psy_hp_filter_mips(const float *firbuf, float *hpfsmpl, const float
float coeff3 = psy_fir_coeffs[7];
float coeff4 = psy_fir_coeffs[9];
+ float f1 = 32768.0;
__asm__ volatile (
".set push \n\t"
".set noreorder \n\t"
- "li.s $f12, 32768 \n\t"
"1: \n\t"
"lwc1 $f0, 40(%[fb]) \n\t"
"lwc1 $f1, 4(%[fb]) \n\t"
@@ -203,14 +203,14 @@ static void psy_hp_filter_mips(const float *firbuf, float *hpfsmpl, const float
"madd.s %[sum2], %[sum2], $f9, %[coeff4] \n\t"
"madd.s %[sum4], %[sum4], $f6, %[coeff4] \n\t"
"madd.s %[sum3], %[sum3], $f3, %[coeff4] \n\t"
- "mul.s %[sum1], %[sum1], $f12 \n\t"
- "mul.s %[sum2], %[sum2], $f12 \n\t"
+ "mul.s %[sum1], %[sum1], %[f1] \n\t"
+ "mul.s %[sum2], %[sum2], %[f1] \n\t"
"madd.s %[sum4], %[sum4], $f11, %[coeff4] \n\t"
"madd.s %[sum3], %[sum3], $f8, %[coeff4] \n\t"
"swc1 %[sum1], 0(%[hp]) \n\t"
"swc1 %[sum2], 4(%[hp]) \n\t"
- "mul.s %[sum4], %[sum4], $f12 \n\t"
- "mul.s %[sum3], %[sum3], $f12 \n\t"
+ "mul.s %[sum4], %[sum4], %[f1] \n\t"
+ "mul.s %[sum3], %[sum3], %[f1] \n\t"
"swc1 %[sum4], 12(%[hp]) \n\t"
"swc1 %[sum3], 8(%[hp]) \n\t"
"bne %[fb], %[fb_end], 1b \n\t"
@@ -223,9 +223,9 @@ static void psy_hp_filter_mips(const float *firbuf, float *hpfsmpl, const float
[fb]"+r"(fb), [hp]"+r"(hp)
: [coeff0]"f"(coeff0), [coeff1]"f"(coeff1),
[coeff2]"f"(coeff2), [coeff3]"f"(coeff3),
- [coeff4]"f"(coeff4), [fb_end]"r"(fb_end)
+ [coeff4]"f"(coeff4), [fb_end]"r"(fb_end), [f1]"f"(f1)
: "$f0", "$f1", "$f2", "$f3", "$f4", "$f5", "$f6",
- "$f7", "$f8", "$f9", "$f10", "$f11", "$f12",
+ "$f7", "$f8", "$f9", "$f10", "$f11",
"memory"
);
}
diff --git a/libavcodec/mips/fft_mips.c b/libavcodec/mips/fft_mips.c
index 03dcbad4d8..69abdc8a08 100644
--- a/libavcodec/mips/fft_mips.c
+++ b/libavcodec/mips/fft_mips.c
@@ -71,6 +71,7 @@ static void ff_fft_calc_mips(FFTContext *s, FFTComplex *z)
float temp, temp1, temp3, temp4;
FFTComplex * tmpz_n2, * tmpz_n34, * tmpz_n4;
FFTComplex * tmpz_n2_i, * tmpz_n34_i, * tmpz_n4_i, * tmpz_i;
+ float f1 = 0.7071067812;
num_transforms = (21845 >> (17 - s->nbits)) | 1;
@@ -148,7 +149,6 @@ static void ff_fft_calc_mips(FFTContext *s, FFTComplex *z)
"swc1 %[pom2], 4(%[tmpz]) \n\t" // tmpz[0].im = tmpz[0].im + tmp6;
"lwc1 %[pom1], 16(%[tmpz]) \n\t"
"lwc1 %[pom3], 20(%[tmpz]) \n\t"
- "li.s %[pom], 0.7071067812 \n\t" // float pom = 0.7071067812f;
"add.s %[temp1],%[tmp1], %[tmp2] \n\t"
"sub.s %[temp], %[pom1], %[tmp8] \n\t"
"add.s %[pom2], %[pom3], %[tmp7] \n\t"
@@ -159,10 +159,10 @@ static void ff_fft_calc_mips(FFTContext *s, FFTComplex *z)
"add.s %[pom1], %[pom1], %[tmp8] \n\t"
"sub.s %[pom3], %[pom3], %[tmp7] \n\t"
"add.s %[tmp3], %[tmp3], %[tmp4] \n\t"
- "mul.s %[tmp5], %[pom], %[temp1] \n\t" // tmp5 = pom * (tmp1 + tmp2);
- "mul.s %[tmp7], %[pom], %[temp3] \n\t" // tmp7 = pom * (tmp3 - tmp4);
- "mul.s %[tmp6], %[pom], %[temp4] \n\t" // tmp6 = pom * (tmp2 - tmp1);
- "mul.s %[tmp8], %[pom], %[tmp3] \n\t" // tmp8 = pom * (tmp3 + tmp4);
+ "mul.s %[tmp5], %[f1], %[temp1] \n\t" // tmp5 = pom * (tmp1 + tmp2);
+ "mul.s %[tmp7], %[f1], %[temp3] \n\t" // tmp7 = pom * (tmp3 - tmp4);
+ "mul.s %[tmp6], %[f1], %[temp4] \n\t" // tmp6 = pom * (tmp2 - tmp1);
+ "mul.s %[tmp8], %[f1], %[tmp3] \n\t" // tmp8 = pom * (tmp3 + tmp4);
"swc1 %[pom1], 16(%[tmpz]) \n\t" // tmpz[2].re = tmpz[2].re + tmp8;
"swc1 %[pom3], 20(%[tmpz]) \n\t" // tmpz[2].im = tmpz[2].im - tmp7;
"add.s %[tmp1], %[tmp5], %[tmp7] \n\t" // tmp1 = tmp5 + tmp7;
@@ -193,7 +193,7 @@ static void ff_fft_calc_mips(FFTContext *s, FFTComplex *z)
[tmp3]"=&f"(tmp3), [tmp2]"=&f"(tmp2), [tmp4]"=&f"(tmp4), [tmp5]"=&f"(tmp5), [tmp7]"=&f"(tmp7),
[tmp6]"=&f"(tmp6), [tmp8]"=&f"(tmp8), [pom3]"=&f"(pom3),[temp]"=&f"(temp), [temp1]"=&f"(temp1),
[temp3]"=&f"(temp3), [temp4]"=&f"(temp4)
- : [tmpz]"r"(tmpz)
+ : [tmpz]"r"(tmpz), [f1]"f"(f1)
: "memory"
);
}
diff --git a/libavcodec/mips/mpegaudiodsp_mips_float.c b/libavcodec/mips/mpegaudiodsp_mips_float.c
index 481b69c10e..ae130c752e 100644
--- a/libavcodec/mips/mpegaudiodsp_mips_float.c
+++ b/libavcodec/mips/mpegaudiodsp_mips_float.c
@@ -287,9 +287,16 @@ static void ff_dct32_mips_float(float *out, const float *tab)
val8 , val9 , val10, val11, val12, val13, val14, val15,
val16, val17, val18, val19, val20, val21, val22, val23,
val24, val25, val26, val27, val28, val29, val30, val31;
- float fTmp1, fTmp2, fTmp3, fTmp4, fTmp5, fTmp6, fTmp7, fTmp8,
- fTmp9, fTmp10, fTmp11;
+ float fTmp1, fTmp2, fTmp3, fTmp4, fTmp5, fTmp6, fTmp8, fTmp9;
+ float f1, f2, f3, f4, f5, f6, f7;
+ f1 = 0.50241928618815570551;
+ f2 = 0.50060299823519630134;
+ f3 = 10.19000812354805681150;
+ f4 = 5.10114861868916385802;
+ f5 = 0.67480834145500574602;
+ f6 = 0.74453627100229844977;
+ f7 = 0.50979557910415916894;
/**
* instructions are scheduled to minimize pipeline stall.
*/
@@ -298,149 +305,142 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"lwc1 %[fTmp2], 31*4(%[tab]) \n\t"
"lwc1 %[fTmp3], 15*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 16*4(%[tab]) \n\t"
- "li.s %[fTmp7], 0.50241928618815570551 \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp10], 0.50060299823519630134 \n\t"
- "li.s %[fTmp11], 10.19000812354805681150 \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f2] \n\t"
"add.s %[val0], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val15], %[fTmp5], %[fTmp6] \n\t"
"lwc1 %[fTmp1], 7*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 24*4(%[tab]) \n\t"
- "madd.s %[val16], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val31], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "mul.s %[val15], %[val15], %[fTmp7] \n\t"
+ "madd.s %[val16], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "nmsub.s %[val31], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "mul.s %[val15], %[val15], %[f1] \n\t"
"lwc1 %[fTmp3], 8*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 23*4(%[tab]) \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
- "mul.s %[val31], %[val31], %[fTmp7] \n\t"
+ "mul.s %[val31], %[val31], %[f1] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp7], 5.10114861868916385802 \n\t"
- "li.s %[fTmp10], 0.67480834145500574602 \n\t"
- "li.s %[fTmp11], 0.74453627100229844977 \n\t"
"add.s %[val7], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val8], %[fTmp5], %[fTmp6] \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
- "li.s %[fTmp1], 0.50979557910415916894 \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f5] \n\t"
"sub.s %[fTmp2], %[val0], %[val7] \n\t"
- "mul.s %[val8], %[val8], %[fTmp7] \n\t"
- "madd.s %[val23], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val24], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
+ "mul.s %[val8], %[val8], %[f4] \n\t"
+ "madd.s %[val23], %[fTmp8], %[fTmp9], %[f6] \n\t"
+ "nmsub.s %[val24], %[fTmp8], %[fTmp9], %[f6] \n\t"
"add.s %[val0], %[val0], %[val7] \n\t"
- "mul.s %[val7], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val7], %[f7], %[fTmp2] \n\t"
"sub.s %[fTmp2], %[val15], %[val8] \n\t"
"add.s %[val8], %[val15], %[val8] \n\t"
- "mul.s %[val24], %[val24], %[fTmp7] \n\t"
+ "mul.s %[val24], %[val24], %[f4] \n\t"
"sub.s %[fTmp3], %[val16], %[val23] \n\t"
"add.s %[val16], %[val16], %[val23] \n\t"
- "mul.s %[val15], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val15], %[f7], %[fTmp2] \n\t"
"sub.s %[fTmp4], %[val31], %[val24] \n\t"
- "mul.s %[val23], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val23], %[f7], %[fTmp3] \n\t"
"add.s %[val24], %[val31], %[val24] \n\t"
- "mul.s %[val31], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val31], %[f7], %[fTmp4] \n\t"
: [fTmp1] "=&f" (fTmp1), [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3),
[fTmp4] "=&f" (fTmp4), [fTmp5] "=&f" (fTmp5), [fTmp6] "=&f" (fTmp6),
- [fTmp7] "=&f" (fTmp7), [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
- [fTmp10] "=&f" (fTmp10), [fTmp11] "=&f" (fTmp11),
- [val0] "=f" (val0), [val7] "=f" (val7),
- [val8] "=f" (val8), [val15] "=f" (val15),
- [val16] "=f" (val16), [val23] "=f" (val23),
- [val24] "=f" (val24), [val31] "=f" (val31)
- : [tab] "r" (tab)
+ [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
+ [val0] "=&f" (val0), [val7] "=&f" (val7),
+ [val8] "=&f" (val8), [val15] "=&f" (val15),
+ [val16] "=&f" (val16), [val23] "=&f" (val23),
+ [val24] "=&f" (val24), [val31] "=&f" (val31)
+ : [tab] "r" (tab), [f1]"f"(f1), [f2]"f"(f2), [f3]"f"(f3),
+ [f4]"f"(f4), [f5]"f"(f5), [f6]"f"(f6), [f7]"f"(f7)
: "memory"
);
+ f1 = 0.64682178335999012954;
+ f2 = 0.53104259108978417447;
+ f3 = 1.48416461631416627724;
+ f4 = 0.78815462345125022473;
+ f5 = 0.55310389603444452782;
+ f6 = 1.16943993343288495515;
+ f7 = 2.56291544774150617881;
__asm__ volatile (
"lwc1 %[fTmp1], 3*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 28*4(%[tab]) \n\t"
"lwc1 %[fTmp3], 12*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 19*4(%[tab]) \n\t"
- "li.s %[fTmp7], 0.64682178335999012954 \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp10], 0.53104259108978417447 \n\t"
- "li.s %[fTmp11], 1.48416461631416627724 \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f2] \n\t"
"add.s %[val3], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val12], %[fTmp5], %[fTmp6] \n\t"
"lwc1 %[fTmp1], 4*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 27*4(%[tab]) \n\t"
- "madd.s %[val19], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val28], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "mul.s %[val12], %[val12], %[fTmp7] \n\t"
+ "madd.s %[val19], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "nmsub.s %[val28], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "mul.s %[val12], %[val12], %[f1] \n\t"
"lwc1 %[fTmp3], 11*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 20*4(%[tab]) \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
- "mul.s %[val28], %[val28], %[fTmp7] \n\t"
+ "mul.s %[val28], %[val28], %[f1] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
- "li.s %[fTmp7], 0.78815462345125022473 \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp10], 0.55310389603444452782 \n\t"
- "li.s %[fTmp11], 1.16943993343288495515 \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f5] \n\t"
"add.s %[val4], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val11], %[fTmp5], %[fTmp6] \n\t"
- "li.s %[fTmp1], 2.56291544774150617881 \n\t"
- "madd.s %[val20], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val27], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "mul.s %[val11], %[val11], %[fTmp7] \n\t"
+ "madd.s %[val20], %[fTmp8], %[fTmp9], %[f6] \n\t"
+ "nmsub.s %[val27], %[fTmp8], %[fTmp9], %[f6] \n\t"
+ "mul.s %[val11], %[val11], %[f4] \n\t"
"sub.s %[fTmp2], %[val3], %[val4] \n\t"
"add.s %[val3], %[val3], %[val4] \n\t"
"sub.s %[fTmp4], %[val19], %[val20] \n\t"
- "mul.s %[val27], %[val27], %[fTmp7] \n\t"
+ "mul.s %[val27], %[val27], %[f4] \n\t"
"sub.s %[fTmp3], %[val12], %[val11] \n\t"
- "mul.s %[val4], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val4], %[f7], %[fTmp2] \n\t"
"add.s %[val11], %[val12], %[val11] \n\t"
"add.s %[val19], %[val19], %[val20] \n\t"
- "mul.s %[val20], %[fTmp1], %[fTmp4] \n\t"
- "mul.s %[val12], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val20], %[f7], %[fTmp4] \n\t"
+ "mul.s %[val12], %[f7], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val28], %[val27] \n\t"
"add.s %[val27], %[val28], %[val27] \n\t"
- "mul.s %[val28], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val28], %[f7], %[fTmp2] \n\t"
: [fTmp1] "=&f" (fTmp1), [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3),
[fTmp4] "=&f" (fTmp4), [fTmp5] "=&f" (fTmp5), [fTmp6] "=&f" (fTmp6),
- [fTmp7] "=&f" (fTmp7), [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
- [fTmp10] "=&f" (fTmp10), [fTmp11] "=&f" (fTmp11),
- [val3] "=f" (val3), [val4] "=f" (val4),
- [val11] "=f" (val11), [val12] "=f" (val12),
- [val19] "=f" (val19), [val20] "=f" (val20),
- [val27] "=f" (val27), [val28] "=f" (val28)
- : [tab] "r" (tab)
+ [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
+ [val3] "=&f" (val3), [val4] "=&f" (val4),
+ [val11] "=&f" (val11), [val12] "=&f" (val12),
+ [val19] "=&f" (val19), [val20] "=&f" (val20),
+ [val27] "=&f" (val27), [val28] "=&f" (val28)
+ : [tab] "r" (tab), [f1]"f"(f1), [f2]"f"(f2), [f3]"f"(f3),
+ [f4]"f"(f4), [f5]"f"(f5), [f6]"f"(f6), [f7]"f"(f7)
: "memory"
);
+ f1 = 0.54119610014619698439;
__asm__ volatile (
- "li.s %[fTmp1], 0.54119610014619698439 \n\t"
"sub.s %[fTmp2], %[val0], %[val3] \n\t"
"add.s %[val0], %[val0], %[val3] \n\t"
"sub.s %[fTmp3], %[val7], %[val4] \n\t"
"add.s %[val4], %[val7], %[val4] \n\t"
"sub.s %[fTmp4], %[val8], %[val11] \n\t"
- "mul.s %[val3], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val3], %[f1], %[fTmp2] \n\t"
"add.s %[val8], %[val8], %[val11] \n\t"
- "mul.s %[val7], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val7], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val15], %[val12] \n\t"
- "mul.s %[val11], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val11], %[f1], %[fTmp4] \n\t"
"add.s %[val12], %[val15], %[val12] \n\t"
- "mul.s %[val15], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val15], %[f1], %[fTmp2] \n\t"
- : [val0] "+f" (val0), [val3] "+f" (val3),
- [val4] "+f" (val4), [val7] "+f" (val7),
- [val8] "+f" (val8), [val11] "+f" (val11),
- [val12] "+f" (val12), [val15] "+f" (val15),
- [fTmp1] "=f" (fTmp1), [fTmp2] "=&f" (fTmp2),
+ : [val0] "+&f" (val0), [val3] "+&f" (val3),
+ [val4] "+&f" (val4), [val7] "+&f" (val7),
+ [val8] "+&f" (val8), [val11] "+&f" (val11),
+ [val12] "+&f" (val12), [val15] "+&f" (val15),
+ [fTmp2] "=&f" (fTmp2),
[fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4)
- :
+ : [f1] "f" (f1)
);
__asm__ volatile (
@@ -449,169 +449,169 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"sub.s %[fTmp3], %[val23], %[val20] \n\t"
"add.s %[val20], %[val23], %[val20] \n\t"
"sub.s %[fTmp4], %[val24], %[val27] \n\t"
- "mul.s %[val19], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val19], %[f1], %[fTmp2] \n\t"
"add.s %[val24], %[val24], %[val27] \n\t"
- "mul.s %[val23], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val23], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val31], %[val28] \n\t"
- "mul.s %[val27], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val27], %[f1], %[fTmp4] \n\t"
"add.s %[val28], %[val31], %[val28] \n\t"
- "mul.s %[val31], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val31], %[f1], %[fTmp2] \n\t"
: [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val16] "+f" (val16), [val19] "+f" (val19), [val20] "+f" (val20),
- [val23] "+f" (val23), [val24] "+f" (val24), [val27] "+f" (val27),
- [val28] "+f" (val28), [val31] "+f" (val31)
- : [fTmp1] "f" (fTmp1)
+ [val16] "+&f" (val16), [val19] "+&f" (val19), [val20] "+&f" (val20),
+ [val23] "+&f" (val23), [val24] "+&f" (val24), [val27] "+&f" (val27),
+ [val28] "+&f" (val28), [val31] "+&f" (val31)
+ : [f1] "f" (f1)
);
+ f1 = 0.52249861493968888062;
+ f2 = 0.50547095989754365998;
+ f3 = 3.40760841846871878570;
+ f4 = 1.72244709823833392782;
+ f5 = 0.62250412303566481615;
+ f6 = 0.83934964541552703873;
+ f7 = 0.60134488693504528054;
__asm__ volatile (
"lwc1 %[fTmp1], 1*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 30*4(%[tab]) \n\t"
"lwc1 %[fTmp3], 14*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 17*4(%[tab]) \n\t"
- "li.s %[fTmp7], 0.52249861493968888062 \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp10], 0.50547095989754365998 \n\t"
- "li.s %[fTmp11], 3.40760841846871878570 \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f2] \n\t"
"add.s %[val1], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val14], %[fTmp5], %[fTmp6] \n\t"
"lwc1 %[fTmp1], 6*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 25*4(%[tab]) \n\t"
- "madd.s %[val17], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val30], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "mul.s %[val14], %[val14], %[fTmp7] \n\t"
+ "madd.s %[val17], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "nmsub.s %[val30], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "mul.s %[val14], %[val14], %[f1] \n\t"
"lwc1 %[fTmp3], 9*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 22*4(%[tab]) \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
- "mul.s %[val30], %[val30], %[fTmp7] \n\t"
+ "mul.s %[val30], %[val30], %[f1] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp7], 1.72244709823833392782 \n\t"
- "li.s %[fTmp10], 0.62250412303566481615 \n\t"
- "li.s %[fTmp11], 0.83934964541552703873 \n\t"
"add.s %[val6], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val9], %[fTmp5], %[fTmp6] \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
- "li.s %[fTmp1], 0.60134488693504528054 \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f5] \n\t"
"sub.s %[fTmp2], %[val1], %[val6] \n\t"
"add.s %[val1], %[val1], %[val6] \n\t"
- "mul.s %[val9], %[val9], %[fTmp7] \n\t"
- "madd.s %[val22], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val25], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "mul.s %[val6], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val9], %[val9], %[f4] \n\t"
+ "madd.s %[val22], %[fTmp8], %[fTmp9], %[f6] \n\t"
+ "nmsub.s %[val25], %[fTmp8], %[fTmp9], %[f6] \n\t"
+ "mul.s %[val6], %[f7], %[fTmp2] \n\t"
"sub.s %[fTmp2], %[val14], %[val9] \n\t"
"add.s %[val9], %[val14], %[val9] \n\t"
- "mul.s %[val25], %[val25], %[fTmp7] \n\t"
+ "mul.s %[val25], %[val25], %[f4] \n\t"
"sub.s %[fTmp3], %[val17], %[val22] \n\t"
"add.s %[val17], %[val17], %[val22] \n\t"
- "mul.s %[val14], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val14], %[f7], %[fTmp2] \n\t"
"sub.s %[fTmp2], %[val30], %[val25] \n\t"
- "mul.s %[val22], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val22], %[f7], %[fTmp3] \n\t"
"add.s %[val25], %[val30], %[val25] \n\t"
- "mul.s %[val30], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val30], %[f7], %[fTmp2] \n\t"
: [fTmp1] "=&f" (fTmp1), [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3),
[fTmp4] "=&f" (fTmp4), [fTmp5] "=&f" (fTmp5), [fTmp6] "=&f" (fTmp6),
- [fTmp7] "=&f" (fTmp7), [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
- [fTmp10] "=&f" (fTmp10), [fTmp11] "=&f" (fTmp11),
- [val1] "=f" (val1), [val6] "=f" (val6),
- [val9] "=f" (val9), [val14] "=f" (val14),
- [val17] "=f" (val17), [val22] "=f" (val22),
- [val25] "=f" (val25), [val30] "=f" (val30)
- : [tab] "r" (tab)
+ [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
+ [val1] "=&f" (val1), [val6] "=&f" (val6),
+ [val9] "=&f" (val9), [val14] "=&f" (val14),
+ [val17] "=&f" (val17), [val22] "=&f" (val22),
+ [val25] "=&f" (val25), [val30] "=&f" (val30)
+ : [tab] "r" (tab), [f1]"f"(f1), [f2]"f"(f2), [f3]"f"(f3),
+ [f4]"f"(f4), [f5]"f"(f5), [f6]"f"(f6), [f7]"f"(f7)
: "memory"
);
+ f1 = 0.56694403481635770368;
+ f2 = 0.51544730992262454697;
+ f3 = 2.05778100995341155085;
+ f4 = 1.06067768599034747134;
+ f5 = 0.58293496820613387367;
+ f6 = 0.97256823786196069369;
+ f7 = 0.89997622313641570463;
__asm__ volatile (
"lwc1 %[fTmp1], 2*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 29*4(%[tab]) \n\t"
"lwc1 %[fTmp3], 13*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 18*4(%[tab]) \n\t"
- "li.s %[fTmp7], 0.56694403481635770368 \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp10], 0.51544730992262454697 \n\t"
- "li.s %[fTmp11], 2.05778100995341155085 \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f2] \n\t"
"add.s %[val2], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val13], %[fTmp5], %[fTmp6] \n\t"
"lwc1 %[fTmp1], 5*4(%[tab]) \n\t"
"lwc1 %[fTmp2], 26*4(%[tab]) \n\t"
- "madd.s %[val18], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val29], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "mul.s %[val13], %[val13], %[fTmp7] \n\t"
+ "madd.s %[val18], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "nmsub.s %[val29], %[fTmp8], %[fTmp9], %[f3] \n\t"
+ "mul.s %[val13], %[val13], %[f1] \n\t"
"lwc1 %[fTmp3], 10*4(%[tab]) \n\t"
"lwc1 %[fTmp4], 21*4(%[tab]) \n\t"
- "mul.s %[val29], %[val29], %[fTmp7] \n\t"
+ "mul.s %[val29], %[val29], %[f1] \n\t"
"add.s %[fTmp5], %[fTmp1], %[fTmp2] \n\t"
"sub.s %[fTmp8], %[fTmp1], %[fTmp2] \n\t"
"add.s %[fTmp6], %[fTmp3], %[fTmp4] \n\t"
"sub.s %[fTmp9], %[fTmp3], %[fTmp4] \n\t"
- "li.s %[fTmp7], 1.06067768599034747134 \n\t"
- "li.s %[fTmp10], 0.58293496820613387367 \n\t"
- "li.s %[fTmp11], 0.97256823786196069369 \n\t"
"add.s %[val5], %[fTmp5], %[fTmp6] \n\t"
"sub.s %[val10], %[fTmp5], %[fTmp6] \n\t"
- "mul.s %[fTmp8], %[fTmp8], %[fTmp10] \n\t"
- "li.s %[fTmp1], 0.89997622313641570463 \n\t"
+ "mul.s %[fTmp8], %[fTmp8], %[f5] \n\t"
"sub.s %[fTmp2], %[val2], %[val5] \n\t"
- "mul.s %[val10], %[val10], %[fTmp7] \n\t"
- "madd.s %[val21], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
- "nmsub.s %[val26], %[fTmp8], %[fTmp9], %[fTmp11] \n\t"
+ "mul.s %[val10], %[val10], %[f4] \n\t"
+ "madd.s %[val21], %[fTmp8], %[fTmp9], %[f6] \n\t"
+ "nmsub.s %[val26], %[fTmp8], %[fTmp9], %[f6] \n\t"
"add.s %[val2], %[val2], %[val5] \n\t"
- "mul.s %[val5], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val5], %[f7], %[fTmp2] \n\t"
"sub.s %[fTmp3], %[val13], %[val10] \n\t"
"add.s %[val10], %[val13], %[val10] \n\t"
- "mul.s %[val26], %[val26], %[fTmp7] \n\t"
+ "mul.s %[val26], %[val26], %[f4] \n\t"
"sub.s %[fTmp4], %[val18], %[val21] \n\t"
"add.s %[val18], %[val18], %[val21] \n\t"
- "mul.s %[val13], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val13], %[f7], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val29], %[val26] \n\t"
"add.s %[val26], %[val29], %[val26] \n\t"
- "mul.s %[val21], %[fTmp1], %[fTmp4] \n\t"
- "mul.s %[val29], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val21], %[f7], %[fTmp4] \n\t"
+ "mul.s %[val29], %[f7], %[fTmp2] \n\t"
: [fTmp1] "=&f" (fTmp1), [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3),
[fTmp4] "=&f" (fTmp4), [fTmp5] "=&f" (fTmp5), [fTmp6] "=&f" (fTmp6),
- [fTmp7] "=&f" (fTmp7), [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
- [fTmp10] "=&f" (fTmp10), [fTmp11] "=&f" (fTmp11),
- [val2] "=f" (val2), [val5] "=f" (val5),
- [val10] "=f" (val10), [val13] "=f" (val13),
- [val18] "=f" (val18), [val21] "=f" (val21),
- [val26] "=f" (val26), [val29] "=f" (val29)
- : [tab] "r" (tab)
+ [fTmp8] "=&f" (fTmp8), [fTmp9] "=&f" (fTmp9),
+ [val2] "=&f" (val2), [val5] "=&f" (val5),
+ [val10] "=&f" (val10), [val13] "=&f" (val13),
+ [val18] "=&f" (val18), [val21] "=&f" (val21),
+ [val26] "=&f" (val26), [val29] "=&f" (val29)
+ : [tab] "r" (tab), [f1]"f"(f1), [f2]"f"(f2), [f3]"f"(f3),
+ [f4]"f"(f4), [f5]"f"(f5), [f6]"f"(f6), [f7]"f"(f7)
: "memory"
);
+ f1 = 1.30656296487637652785;
__asm__ volatile (
- "li.s %[fTmp1], 1.30656296487637652785 \n\t"
"sub.s %[fTmp2], %[val1], %[val2] \n\t"
"add.s %[val1], %[val1], %[val2] \n\t"
"sub.s %[fTmp3], %[val6], %[val5] \n\t"
"add.s %[val5], %[val6], %[val5] \n\t"
"sub.s %[fTmp4], %[val9], %[val10] \n\t"
- "mul.s %[val2], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val2], %[f1], %[fTmp2] \n\t"
"add.s %[val9], %[val9], %[val10] \n\t"
- "mul.s %[val6], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val6], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val14], %[val13] \n\t"
- "mul.s %[val10], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val10], %[f1], %[fTmp4] \n\t"
"add.s %[val13], %[val14], %[val13] \n\t"
- "mul.s %[val14], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val14], %[f1], %[fTmp2] \n\t"
- : [fTmp1] "=f" (fTmp1), [fTmp2] "=&f" (fTmp2),
+ : [fTmp2] "=&f" (fTmp2),
[fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val1] "+f" (val1), [val2] "+f" (val2),
- [val5] "+f" (val5), [val6] "+f" (val6),
- [val9] "+f" (val9), [val10] "+f" (val10),
- [val13] "+f" (val13), [val14] "+f" (val14)
- :
+ [val1] "+&f" (val1), [val2] "+&f" (val2),
+ [val5] "+&f" (val5), [val6] "+&f" (val6),
+ [val9] "+&f" (val9), [val10] "+&f" (val10),
+ [val13] "+&f" (val13), [val14] "+&f" (val14)
+ : [f1]"f"(f1)
);
__asm__ volatile (
@@ -620,39 +620,39 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"sub.s %[fTmp3], %[val22], %[val21] \n\t"
"add.s %[val21], %[val22], %[val21] \n\t"
"sub.s %[fTmp4], %[val25], %[val26] \n\t"
- "mul.s %[val18], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val18], %[f1], %[fTmp2] \n\t"
"add.s %[val25], %[val25], %[val26] \n\t"
- "mul.s %[val22], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val22], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val30], %[val29] \n\t"
- "mul.s %[val26], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val26], %[f1], %[fTmp4] \n\t"
"add.s %[val29], %[val30], %[val29] \n\t"
- "mul.s %[val30], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val30], %[f1], %[fTmp2] \n\t"
: [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val17] "+f" (val17), [val18] "+f" (val18), [val21] "+f" (val21),
- [val22] "+f" (val22), [val25] "+f" (val25), [val26] "+f" (val26),
- [val29] "+f" (val29), [val30] "+f" (val30)
- : [fTmp1] "f" (fTmp1)
+ [val17] "+&f" (val17), [val18] "+&f" (val18), [val21] "+&f" (val21),
+ [val22] "+&f" (val22), [val25] "+&f" (val25), [val26] "+&f" (val26),
+ [val29] "+&f" (val29), [val30] "+&f" (val30)
+ : [f1] "f" (f1)
);
+ f1 = 0.70710678118654752439;
__asm__ volatile (
- "li.s %[fTmp1], 0.70710678118654752439 \n\t"
"sub.s %[fTmp2], %[val0], %[val1] \n\t"
"add.s %[val0], %[val0], %[val1] \n\t"
"sub.s %[fTmp3], %[val3], %[val2] \n\t"
"add.s %[val2], %[val3], %[val2] \n\t"
"sub.s %[fTmp4], %[val4], %[val5] \n\t"
- "mul.s %[val1], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val1], %[f1], %[fTmp2] \n\t"
"swc1 %[val0], 0(%[out]) \n\t"
- "mul.s %[val3], %[fTmp3], %[fTmp1] \n\t"
+ "mul.s %[val3], %[fTmp3], %[f1] \n\t"
"add.s %[val4], %[val4], %[val5] \n\t"
- "mul.s %[val5], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val5], %[f1], %[fTmp4] \n\t"
"swc1 %[val1], 16*4(%[out]) \n\t"
"sub.s %[fTmp2], %[val7], %[val6] \n\t"
"add.s %[val2], %[val2], %[val3] \n\t"
"swc1 %[val3], 24*4(%[out]) \n\t"
"add.s %[val6], %[val7], %[val6] \n\t"
- "mul.s %[val7], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val7], %[f1], %[fTmp2] \n\t"
"swc1 %[val2], 8*4(%[out]) \n\t"
"add.s %[val6], %[val6], %[val7] \n\t"
"swc1 %[val7], 28*4(%[out]) \n\t"
@@ -663,13 +663,13 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"swc1 %[val5], 20*4(%[out]) \n\t"
"swc1 %[val6], 12*4(%[out]) \n\t"
- : [fTmp1] "=f" (fTmp1), [fTmp2] "=&f" (fTmp2),
+ : [fTmp2] "=&f" (fTmp2),
[fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val0] "+f" (val0), [val1] "+f" (val1),
- [val2] "+f" (val2), [val3] "+f" (val3),
- [val4] "+f" (val4), [val5] "+f" (val5),
- [val6] "+f" (val6), [val7] "+f" (val7)
- : [out] "r" (out)
+ [val0] "+&f" (val0), [val1] "+&f" (val1),
+ [val2] "+&f" (val2), [val3] "+&f" (val3),
+ [val4] "+&f" (val4), [val5] "+&f" (val5),
+ [val6] "+&f" (val6), [val7] "+&f" (val7)
+ : [out] "r" (out), [f1]"f"(f1)
);
__asm__ volatile (
@@ -678,14 +678,14 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"sub.s %[fTmp3], %[val11], %[val10] \n\t"
"add.s %[val10], %[val11], %[val10] \n\t"
"sub.s %[fTmp4], %[val12], %[val13] \n\t"
- "mul.s %[val9], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val9], %[f1], %[fTmp2] \n\t"
"add.s %[val12], %[val12], %[val13] \n\t"
- "mul.s %[val11], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val11], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val15], %[val14] \n\t"
- "mul.s %[val13], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val13], %[f1], %[fTmp4] \n\t"
"add.s %[val14], %[val15], %[val14] \n\t"
"add.s %[val10], %[val10], %[val11] \n\t"
- "mul.s %[val15], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val15], %[f1], %[fTmp2] \n\t"
"add.s %[val14], %[val14], %[val15] \n\t"
"add.s %[val12], %[val12], %[val14] \n\t"
"add.s %[val14], %[val14], %[val13] \n\t"
@@ -707,10 +707,10 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"swc1 %[val15], 30*4(%[out]) \n\t"
: [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val8] "+f" (val8), [val9] "+f" (val9), [val10] "+f" (val10),
- [val11] "+f" (val11), [val12] "+f" (val12), [val13] "+f" (val13),
- [val14] "+f" (val14), [val15] "+f" (val15)
- : [fTmp1] "f" (fTmp1), [out] "r" (out)
+ [val8] "+&f" (val8), [val9] "+&f" (val9), [val10] "+&f" (val10),
+ [val11] "+&f" (val11), [val12] "+&f" (val12), [val13] "+&f" (val13),
+ [val14] "+&f" (val14), [val15] "+&f" (val15)
+ : [f1] "f" (f1), [out] "r" (out)
);
__asm__ volatile (
@@ -719,24 +719,24 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"sub.s %[fTmp3], %[val19], %[val18] \n\t"
"add.s %[val18], %[val19], %[val18] \n\t"
"sub.s %[fTmp4], %[val20], %[val21] \n\t"
- "mul.s %[val17], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val17], %[f1], %[fTmp2] \n\t"
"add.s %[val20], %[val20], %[val21] \n\t"
- "mul.s %[val19], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val19], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val23], %[val22] \n\t"
- "mul.s %[val21], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val21], %[f1], %[fTmp4] \n\t"
"add.s %[val22], %[val23], %[val22] \n\t"
"add.s %[val18], %[val18], %[val19] \n\t"
- "mul.s %[val23], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val23], %[f1], %[fTmp2] \n\t"
"add.s %[val22], %[val22], %[val23] \n\t"
"add.s %[val20], %[val20], %[val22] \n\t"
"add.s %[val22], %[val22], %[val21] \n\t"
"add.s %[val21], %[val21], %[val23] \n\t"
: [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val16] "+f" (val16), [val17] "+f" (val17), [val18] "+f" (val18),
- [val19] "+f" (val19), [val20] "+f" (val20), [val21] "+f" (val21),
- [val22] "+f" (val22), [val23] "+f" (val23)
- : [fTmp1] "f" (fTmp1)
+ [val16] "+&f" (val16), [val17] "+&f" (val17), [val18] "+&f" (val18),
+ [val19] "+&f" (val19), [val20] "+&f" (val20), [val21] "+&f" (val21),
+ [val22] "+&f" (val22), [val23] "+&f" (val23)
+ : [f1] "f" (f1)
);
__asm__ volatile (
@@ -745,14 +745,14 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"sub.s %[fTmp3], %[val27], %[val26] \n\t"
"add.s %[val26], %[val27], %[val26] \n\t"
"sub.s %[fTmp4], %[val28], %[val29] \n\t"
- "mul.s %[val25], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val25], %[f1], %[fTmp2] \n\t"
"add.s %[val28], %[val28], %[val29] \n\t"
- "mul.s %[val27], %[fTmp1], %[fTmp3] \n\t"
+ "mul.s %[val27], %[f1], %[fTmp3] \n\t"
"sub.s %[fTmp2], %[val31], %[val30] \n\t"
- "mul.s %[val29], %[fTmp1], %[fTmp4] \n\t"
+ "mul.s %[val29], %[f1], %[fTmp4] \n\t"
"add.s %[val30], %[val31], %[val30] \n\t"
"add.s %[val26], %[val26], %[val27] \n\t"
- "mul.s %[val31], %[fTmp1], %[fTmp2] \n\t"
+ "mul.s %[val31], %[f1], %[fTmp2] \n\t"
"add.s %[val30], %[val30], %[val31] \n\t"
"add.s %[val28], %[val28], %[val30] \n\t"
"add.s %[val30], %[val30], %[val29] \n\t"
@@ -766,10 +766,10 @@ static void ff_dct32_mips_float(float *out, const float *tab)
"add.s %[val27], %[val27], %[val31] \n\t"
: [fTmp2] "=&f" (fTmp2), [fTmp3] "=&f" (fTmp3), [fTmp4] "=&f" (fTmp4),
- [val24] "+f" (val24), [val25] "+f" (val25), [val26] "+f" (val26),
- [val27] "+f" (val27), [val28] "+f" (val28), [val29] "+f" (val29),
- [val30] "+f" (val30), [val31] "+f" (val31)
- : [fTmp1] "f" (fTmp1)
+ [val24] "+&f" (val24), [val25] "+&f" (val25), [val26] "+&f" (val26),
+ [val27] "+&f" (val27), [val28] "+&f" (val28), [val29] "+&f" (val29),
+ [val30] "+&f" (val30), [val31] "+&f" (val31)
+ : [f1] "f" (f1)
);
out[ 1] = val16 + val24;
@@ -797,7 +797,7 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
/* temporary variables */
float in1, in2, in3, in4, in5, in6;
float out1, out2, out3, out4, out5;
- float c1, c2, c3, c4, c5, c6, c7, c8, c9;
+ float f1, f2, f3, f4, f5, f6, f7, f8, f9;
/**
* all loops are unrolled totally, and instructions are scheduled to
@@ -881,33 +881,36 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
);
/* loop 3 */
+ f1 = 0.5;
+ f2 = 0.93969262078590838405;
+ f3 = -0.76604444311897803520;
+ f4 = -0.17364817766693034885;
+ f5 = -0.86602540378443864676;
+ f6 = 0.98480775301220805936;
+ f7 = -0.34202014332566873304;
+ f8 = 0.86602540378443864676;
+ f9 = -0.64278760968653932632;
__asm__ volatile (
- "li.s %[c1], 0.5 \t\n"
"lwc1 %[in1], 8*4(%[in]) \t\n"
"lwc1 %[in2], 16*4(%[in]) \t\n"
"lwc1 %[in3], 4*4(%[in]) \t\n"
"lwc1 %[in4], 0(%[in]) \t\n"
"lwc1 %[in5], 12*4(%[in]) \t\n"
- "li.s %[c2], 0.93969262078590838405 \t\n"
"add.s %[t2], %[in1], %[in2] \t\n"
"add.s %[t0], %[in1], %[in3] \t\n"
- "li.s %[c3], -0.76604444311897803520 \t\n"
- "madd.s %[t3], %[in4], %[in5], %[c1] \t\n"
+ "madd.s %[t3], %[in4], %[in5], %[f1] \t\n"
"sub.s %[t1], %[in4], %[in5] \t\n"
"sub.s %[t2], %[t2], %[in3] \t\n"
- "mul.s %[t0], %[t0], %[c2] \t\n"
- "li.s %[c4], -0.17364817766693034885 \t\n"
- "li.s %[c5], -0.86602540378443864676 \t\n"
- "li.s %[c6], 0.98480775301220805936 \t\n"
- "nmsub.s %[out1], %[t1], %[t2], %[c1] \t\n"
+ "mul.s %[t0], %[t0], %[f2] \t\n"
+ "nmsub.s %[out1], %[t1], %[t2], %[f1] \t\n"
"add.s %[out2], %[t1], %[t2] \t\n"
"add.s %[t2], %[in2], %[in3] \t\n"
"sub.s %[t1], %[in1], %[in2] \t\n"
"sub.s %[out3], %[t3], %[t0] \t\n"
"swc1 %[out1], 6*4(%[tmp]) \t\n"
"swc1 %[out2], 16*4(%[tmp]) \t\n"
- "mul.s %[t2], %[t2], %[c3] \t\n"
- "mul.s %[t1], %[t1], %[c4] \t\n"
+ "mul.s %[t2], %[t2], %[f3] \t\n"
+ "mul.s %[t1], %[t1], %[f4] \t\n"
"add.s %[out1], %[t3], %[t0] \t\n"
"lwc1 %[in1], 10*4(%[in]) \t\n"
"lwc1 %[in2], 14*4(%[in]) \t\n"
@@ -923,19 +926,16 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"add.s %[t2], %[in1], %[in3] \t\n"
"sub.s %[t3], %[in1], %[in2] \t\n"
"swc1 %[out2], 14*4(%[tmp]) \t\n"
- "li.s %[c7], -0.34202014332566873304 \t\n"
"sub.s %[out1], %[out1], %[in3] \t\n"
- "mul.s %[t2], %[t2], %[c6] \t\n"
- "mul.s %[t3], %[t3], %[c7] \t\n"
- "li.s %[c8], 0.86602540378443864676 \t\n"
- "mul.s %[t0], %[in4], %[c8] \t\n"
- "mul.s %[out1], %[out1], %[c5] \t\n"
+ "mul.s %[t2], %[t2], %[f6] \t\n"
+ "mul.s %[t3], %[t3], %[f7] \t\n"
+ "mul.s %[t0], %[in4], %[f8] \t\n"
+ "mul.s %[out1], %[out1], %[f5] \t\n"
"add.s %[t1], %[in2], %[in3] \t\n"
- "li.s %[c9], -0.64278760968653932632 \t\n"
"add.s %[out2], %[t2], %[t3] \t\n"
"lwc1 %[in1], 9*4(%[in]) \t\n"
"swc1 %[out1], 4*4(%[tmp]) \t\n"
- "mul.s %[t1], %[t1], %[c9] \t\n"
+ "mul.s %[t1], %[t1], %[f9] \t\n"
"lwc1 %[in2], 17*4(%[in]) \t\n"
"add.s %[out2], %[out2], %[t0] \t\n"
"lwc1 %[in3], 5*4(%[in]) \t\n"
@@ -948,21 +948,21 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"sub.s %[out3], %[out3], %[t0] \t\n"
"sub.s %[out1], %[out1], %[t0] \t\n"
"add.s %[t0], %[in1], %[in3] \t\n"
- "madd.s %[t3], %[in4], %[in5], %[c1] \t\n"
+ "madd.s %[t3], %[in4], %[in5], %[f1] \t\n"
"sub.s %[t2], %[t2], %[in3] \t\n"
"swc1 %[out3], 12*4(%[tmp]) \t\n"
"swc1 %[out1], 8*4(%[tmp]) \t\n"
"sub.s %[t1], %[in4], %[in5] \t\n"
- "mul.s %[t0], %[t0], %[c2] \t\n"
- "nmsub.s %[out1], %[t1], %[t2], %[c1] \t\n"
+ "mul.s %[t0], %[t0], %[f2] \t\n"
+ "nmsub.s %[out1], %[t1], %[t2], %[f1] \t\n"
"add.s %[out2], %[t1], %[t2] \t\n"
"add.s %[t2], %[in2], %[in3] \t\n"
"sub.s %[t1], %[in1], %[in2] \t\n"
"sub.s %[out3], %[t3], %[t0] \t\n"
"swc1 %[out1], 7*4(%[tmp]) \t\n"
"swc1 %[out2], 17*4(%[tmp]) \t\n"
- "mul.s %[t2], %[t2], %[c3] \t\n"
- "mul.s %[t1], %[t1], %[c4] \t\n"
+ "mul.s %[t2], %[t2], %[f3] \t\n"
+ "mul.s %[t1], %[t1], %[f4] \t\n"
"add.s %[out1], %[t3], %[t0] \t\n"
"lwc1 %[in1], 11*4(%[in]) \t\n"
"lwc1 %[in2], 15*4(%[in]) \t\n"
@@ -978,14 +978,14 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"add.s %[t2], %[in1], %[in3] \t\n"
"sub.s %[t3], %[in1], %[in2] \t\n"
"swc1 %[out2], 15*4(%[tmp]) \t\n"
- "mul.s %[t0], %[in4], %[c8] \t\n"
+ "mul.s %[t0], %[in4], %[f8] \t\n"
"sub.s %[out3], %[out3], %[in3] \t\n"
- "mul.s %[t2], %[t2], %[c6] \t\n"
- "mul.s %[t3], %[t3], %[c7] \t\n"
+ "mul.s %[t2], %[t2], %[f6] \t\n"
+ "mul.s %[t3], %[t3], %[f7] \t\n"
"add.s %[t1], %[in2], %[in3] \t\n"
- "mul.s %[out3], %[out3], %[c5] \t\n"
+ "mul.s %[out3], %[out3], %[f5] \t\n"
"add.s %[out1], %[t2], %[t3] \t\n"
- "mul.s %[t1], %[t1], %[c9] \t\n"
+ "mul.s %[t1], %[t1], %[f9] \t\n"
"swc1 %[out3], 5*4(%[tmp]) \t\n"
"add.s %[out1], %[out1], %[t0] \t\n"
"add.s %[out2], %[t2], %[t1] \t\n"
@@ -1000,26 +1000,29 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
[t2] "=&f" (t2), [t3] "=&f" (t3),
[in1] "=&f" (in1), [in2] "=&f" (in2),
[in3] "=&f" (in3), [in4] "=&f" (in4),
- [in5] "=&f" (in5),
- [out1] "=&f" (out1), [out2] "=&f" (out2),
- [out3] "=&f" (out3),
- [c1] "=&f" (c1), [c2] "=&f" (c2),
- [c3] "=&f" (c3), [c4] "=&f" (c4),
- [c5] "=&f" (c5), [c6] "=&f" (c6),
- [c7] "=&f" (c7), [c8] "=&f" (c8),
- [c9] "=&f" (c9)
- : [in] "r" (in), [tmp] "r" (tmp)
+ [in5] "=&f" (in5), [out1] "=&f" (out1),
+ [out2] "=&f" (out2), [out3] "=&f" (out3)
+ : [in] "r" (in), [tmp] "r" (tmp), [f1]"f"(f1), [f2]"f"(f2),
+ [f3]"f"(f3), [f4]"f"(f4), [f5]"f"(f5), [f6]"f"(f6),
+ [f7]"f"(f7), [f8]"f"(f8), [f9]"f"(f9)
: "memory"
);
/* loop 4 */
+ f1 = 0.50190991877167369479;
+ f2 = 5.73685662283492756461;
+ f3 = 0.51763809020504152469;
+ f4 = 1.93185165257813657349;
+ f5 = 0.55168895948124587824;
+ f6 = 1.18310079157624925896;
+ f7 = 0.61038729438072803416;
+ f8 = 0.87172339781054900991;
+ f9 = 0.70710678118654752439;
__asm__ volatile (
"lwc1 %[in1], 2*4(%[tmp]) \t\n"
"lwc1 %[in2], 0(%[tmp]) \t\n"
"lwc1 %[in3], 3*4(%[tmp]) \t\n"
"lwc1 %[in4], 1*4(%[tmp]) \t\n"
- "li.s %[c1], 0.50190991877167369479 \t\n"
- "li.s %[c2], 5.73685662283492756461 \t\n"
"add.s %[s0], %[in1], %[in2] \t\n"
"sub.s %[s2], %[in1], %[in2] \t\n"
"add.s %[s1], %[in3], %[in4] \t\n"
@@ -1027,15 +1030,13 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"lwc1 %[in1], 9*4(%[win]) \t\n"
"lwc1 %[in2], 4*9*4(%[buf]) \t\n"
"lwc1 %[in3], 8*4(%[win]) \t\n"
- "mul.s %[s1], %[s1], %[c1] \t\n"
- "mul.s %[s3], %[s3], %[c2] \t\n"
+ "mul.s %[s1], %[s1], %[f1] \t\n"
+ "mul.s %[s3], %[s3], %[f2] \t\n"
"lwc1 %[in4], 4*8*4(%[buf]) \t\n"
"lwc1 %[in5], 29*4(%[win]) \t\n"
"lwc1 %[in6], 28*4(%[win]) \t\n"
"add.s %[t0], %[s0], %[s1] \t\n"
"sub.s %[t1], %[s0], %[s1] \t\n"
- "li.s %[c1], 0.51763809020504152469 \t\n"
- "li.s %[c2], 1.93185165257813657349 \t\n"
"mul.s %[out3], %[in5], %[t0] \t\n"
"madd.s %[out1], %[in2], %[in1], %[t1] \t\n"
"madd.s %[out2], %[in4], %[in3], %[t1] \t\n"
@@ -1071,14 +1072,13 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"lwc1 %[in1], 10*4(%[win]) \t\n"
"lwc1 %[in2], 4*10*4(%[buf]) \t\n"
"lwc1 %[in3], 7*4(%[win]) \t\n"
- "mul.s %[s1], %[s1], %[c1] \t\n"
- "mul.s %[s3], %[s3], %[c2] \t\n"
+ "mul.s %[s1], %[s1], %[f3] \t\n"
+ "mul.s %[s3], %[s3], %[f4] \t\n"
"add.s %[t0], %[s0], %[s1] \t\n"
"sub.s %[t1], %[s0], %[s1] \t\n"
"lwc1 %[in4], 4*7*4(%[buf]) \t\n"
"lwc1 %[in5], 30*4(%[win]) \t\n"
"lwc1 %[in6], 27*4(%[win]) \t\n"
- "li.s %[c1], 0.55168895948124587824 \t\n"
"madd.s %[out1], %[in2], %[in1], %[t1] \t\n"
"madd.s %[out2], %[in4], %[in3], %[t1] \t\n"
"mul.s %[out3], %[t0], %[in5] \t\n"
@@ -1105,7 +1105,6 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"swc1 %[out2], 32*4(%[out]) \t\n"
"swc1 %[out3], 4*16*4(%[buf]) \t\n"
"swc1 %[out4], 4*1*4(%[buf]) \t\n"
- "li.s %[c2], 1.18310079157624925896 \t\n"
"add.s %[s0], %[in1], %[in2] \t\n"
"sub.s %[s2], %[in1], %[in2] \t\n"
"lwc1 %[in3], 11*4(%[tmp]) \t\n"
@@ -1115,8 +1114,8 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"lwc1 %[in1], 11*4(%[win]) \t\n"
"lwc1 %[in2], 4*11*4(%[buf]) \t\n"
"lwc1 %[in3], 6*4(%[win]) \t\n"
- "mul.s %[s1], %[s1], %[c1] \t\n"
- "mul.s %[s3], %[s3], %[c2] \t\n"
+ "mul.s %[s1], %[s1], %[f5] \t\n"
+ "mul.s %[s3], %[s3], %[f6] \t\n"
"lwc1 %[in4], 4*6*4(%[buf]) \t\n"
"lwc1 %[in5], 31*4(%[win]) \t\n"
"lwc1 %[in6], 26*4(%[win]) \t\n"
@@ -1152,15 +1151,13 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"add.s %[s0], %[in1], %[in2] \t\n"
"sub.s %[s2], %[in1], %[in2] \t\n"
"lwc1 %[in4], 13*4(%[tmp]) \t\n"
- "li.s %[c1], 0.61038729438072803416 \t\n"
- "li.s %[c2], 0.87172339781054900991 \t\n"
"add.s %[s1], %[in3], %[in4] \t\n"
"sub.s %[s3], %[in3], %[in4] \t\n"
"lwc1 %[in1], 12*4(%[win]) \t\n"
"lwc1 %[in2], 4*12*4(%[buf]) \t\n"
"lwc1 %[in3], 5*4(%[win]) \t\n"
- "mul.s %[s1], %[s1], %[c1] \t\n"
- "mul.s %[s3], %[s3], %[c2] \t\n"
+ "mul.s %[s1], %[s1], %[f7] \t\n"
+ "mul.s %[s3], %[s3], %[f8] \t\n"
"lwc1 %[in4], 4*5*4(%[buf]) \t\n"
"lwc1 %[in5], 32*4(%[win]) \t\n"
"lwc1 %[in6], 25*4(%[win]) \t\n"
@@ -1168,7 +1165,6 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"sub.s %[t1], %[s0], %[s1] \t\n"
"lwc1 %[s0], 16*4(%[tmp]) \t\n"
"lwc1 %[s1], 17*4(%[tmp]) \t\n"
- "li.s %[c1], 0.70710678118654752439 \t\n"
"mul.s %[out3], %[t0], %[in5] \t\n"
"madd.s %[out1], %[in2], %[in1], %[t1] \t\n"
"madd.s %[out2], %[in4], %[in3], %[t1] \t\n"
@@ -1186,7 +1182,7 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"lwc1 %[in5], 34*4(%[win]) \t\n"
"lwc1 %[in6], 23*4(%[win]) \t\n"
"madd.s %[out1], %[in2], %[in1], %[t1] \t\n"
- "mul.s %[s1], %[s1], %[c1] \t\n"
+ "mul.s %[s1], %[s1], %[f9] \t\n"
"madd.s %[out2], %[in4], %[in3], %[t1] \t\n"
"mul.s %[out3], %[in5], %[t0] \t\n"
"mul.s %[out4], %[in6], %[t0] \t\n"
@@ -1211,18 +1207,18 @@ static void imdct36_mips_float(float *out, float *buf, float *in, float *win)
"swc1 %[out3], 4*13*4(%[buf]) \t\n"
"swc1 %[out4], 4*4*4(%[buf]) \t\n"
- : [c1] "=&f" (c1), [c2] "=&f" (c2),
- [in1] "=&f" (in1), [in2] "=&f" (in2),
+ : [in1] "=&f" (in1), [in2] "=&f" (in2),
[in3] "=&f" (in3), [in4] "=&f" (in4),
[in5] "=&f" (in5), [in6] "=&f" (in6),
[out1] "=&f" (out1), [out2] "=&f" (out2),
[out3] "=&f" (out3), [out4] "=&f" (out4),
[t0] "=&f" (t0), [t1] "=&f" (t1),
- [t2] "=&f" (t2), [t3] "=&f" (t3),
[s0] "=&f" (s0), [s1] "=&f" (s1),
[s2] "=&f" (s2), [s3] "=&f" (s3)
: [tmp] "r" (tmp), [win] "r" (win),
- [buf] "r" (buf), [out] "r" (out)
+ [buf] "r" (buf), [out] "r" (out),
+ [f1]"f"(f1), [f2]"f"(f2), [f3]"f"(f3), [f4]"f"(f4),
+ [f5]"f"(f5), [f6]"f"(f6), [f7]"f"(f7), [f8]"f"(f8), [f9]"f"(f9)
: "memory"
);
}
1
0
ffmpeg | branch: master | Shiyou Yin <yinshiyou-hf(a)loongson.cn> | Wed Jul 29 18:11:00 2020 +0800| [1563b4b4c615e2264c2d302b97b1d507e153255c] | committer: Michael Niedermayer
avcodec/mips/cabac: Fix a bug in get_cabac_inline_mips.
Failed fate case: fate-h264-conformance-caba2_sony_e
Clang is more strict in the use of register constraint.
Signed-off-by: Michael Niedermayer <michael(a)niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1563b4b4c615e2264…
---
libavcodec/mips/cabac.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavcodec/mips/cabac.h b/libavcodec/mips/cabac.h
index c595915eda..3d09e93523 100644
--- a/libavcodec/mips/cabac.h
+++ b/libavcodec/mips/cabac.h
@@ -109,7 +109,7 @@ static av_always_inline int get_cabac_inline_mips(CABACContext *c,
[lps_off]"i"(H264_LPS_RANGE_OFFSET),
[mlps_off]"i"(H264_MLPS_STATE_OFFSET + 128),
[norm_off]"i"(H264_NORM_SHIFT_OFFSET),
- [cabac_mask]"i"(CABAC_MASK)
+ [cabac_mask]"r"(CABAC_MASK)
: "memory"
);
1
0