* [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit chroma DC dequant
@ 2024-07-07 11:44 Rémi Denis-Courmont
2024-07-07 11:44 ` [FFmpeg-devel] [PATCH 2/2] lavc/h264dsp: remove MMI 8-bit 4:2:2 " Rémi Denis-Courmont
2024-07-07 11:58 ` [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit " Rémi Denis-Courmont
0 siblings, 2 replies; 3+ messages in thread
From: Rémi Denis-Courmont @ 2024-07-07 11:44 UTC (permalink / raw)
To: ffmpeg-devel
The function is exactly identical to the C reference, only with the
constant propagated manually. It does not optimise anything.
---
libavcodec/mips/h264dsp_init_mips.c | 5 +----
libavcodec/mips/h264dsp_mips.h | 1 -
libavcodec/mips/h264dsp_mmi.c | 14 --------------
3 files changed, 1 insertion(+), 19 deletions(-)
diff --git a/libavcodec/mips/h264dsp_init_mips.c b/libavcodec/mips/h264dsp_init_mips.c
index e33df32c71..615b00d142 100644
--- a/libavcodec/mips/h264dsp_init_mips.c
+++ b/libavcodec/mips/h264dsp_init_mips.c
@@ -46,10 +46,7 @@ av_cold void ff_h264dsp_init_mips(H264DSPContext *c, const int bit_depth,
c->h264_luma_dc_dequant_idct = ff_h264_luma_dc_dequant_idct_8_mmi;
- if (chroma_format_idc <= 1)
- c->h264_chroma_dc_dequant_idct =
- ff_h264_chroma_dc_dequant_idct_8_mmi;
- else
+ if (chroma_format_idc > 1)
c->h264_chroma_dc_dequant_idct =
ff_h264_chroma422_dc_dequant_idct_8_mmi;
diff --git a/libavcodec/mips/h264dsp_mips.h b/libavcodec/mips/h264dsp_mips.h
index 93a201c66a..7e1dcdd013 100644
--- a/libavcodec/mips/h264dsp_mips.h
+++ b/libavcodec/mips/h264dsp_mips.h
@@ -340,7 +340,6 @@ void ff_h264_idct_add8_422_8_mmi(uint8_t **dest, const int *block_offset,
int16_t *block, int stride, const uint8_t nnzc[15*8]);
void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
int qmul);
-void ff_h264_chroma_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
void ff_h264_chroma422_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
void ff_h264_weight_pixels16_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
diff --git a/libavcodec/mips/h264dsp_mmi.c b/libavcodec/mips/h264dsp_mmi.c
index dff3d331b1..1ee8ca2f1c 100644
--- a/libavcodec/mips/h264dsp_mmi.c
+++ b/libavcodec/mips/h264dsp_mmi.c
@@ -1117,20 +1117,6 @@ void ff_h264_chroma422_dc_dequant_idct_8_mmi(int16_t *block, int qmul)
block[112]= (t[7]*qmul + 128) >> 8;
}
-void ff_h264_chroma_dc_dequant_idct_8_mmi(int16_t *block, int qmul)
-{
- int a,b,c,d;
-
- d = block[0] - block[16];
- a = block[0] + block[16];
- b = block[32] - block[48];
- c = block[32] + block[48];
- block[0] = ((a+c)*qmul) >> 7;
- block[16]= ((d+b)*qmul) >> 7;
- block[32]= ((a-c)*qmul) >> 7;
- block[48]= ((d-b)*qmul) >> 7;
-}
-
void ff_h264_weight_pixels16_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
int log2_denom, int weight, int offset)
{
--
2.45.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 3+ messages in thread
* [FFmpeg-devel] [PATCH 2/2] lavc/h264dsp: remove MMI 8-bit 4:2:2 chroma DC dequant
2024-07-07 11:44 [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit chroma DC dequant Rémi Denis-Courmont
@ 2024-07-07 11:44 ` Rémi Denis-Courmont
2024-07-07 11:58 ` [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit " Rémi Denis-Courmont
1 sibling, 0 replies; 3+ messages in thread
From: Rémi Denis-Courmont @ 2024-07-07 11:44 UTC (permalink / raw)
To: ffmpeg-devel
The function is exactly identical to the C reference, only with the
constant propagated and the loop unrolled manually.
---
libavcodec/mips/h264dsp_init_mips.c | 4 ----
libavcodec/mips/h264dsp_mips.h | 1 -
libavcodec/mips/h264dsp_mmi.c | 33 -----------------------------
3 files changed, 38 deletions(-)
diff --git a/libavcodec/mips/h264dsp_init_mips.c b/libavcodec/mips/h264dsp_init_mips.c
index 615b00d142..72f42895e8 100644
--- a/libavcodec/mips/h264dsp_init_mips.c
+++ b/libavcodec/mips/h264dsp_init_mips.c
@@ -46,10 +46,6 @@ av_cold void ff_h264dsp_init_mips(H264DSPContext *c, const int bit_depth,
c->h264_luma_dc_dequant_idct = ff_h264_luma_dc_dequant_idct_8_mmi;
- if (chroma_format_idc > 1)
- c->h264_chroma_dc_dequant_idct =
- ff_h264_chroma422_dc_dequant_idct_8_mmi;
-
c->weight_h264_pixels_tab[0] = ff_h264_weight_pixels16_8_mmi;
c->weight_h264_pixels_tab[1] = ff_h264_weight_pixels8_8_mmi;
c->weight_h264_pixels_tab[2] = ff_h264_weight_pixels4_8_mmi;
diff --git a/libavcodec/mips/h264dsp_mips.h b/libavcodec/mips/h264dsp_mips.h
index 7e1dcdd013..4a2a2c2559 100644
--- a/libavcodec/mips/h264dsp_mips.h
+++ b/libavcodec/mips/h264dsp_mips.h
@@ -340,7 +340,6 @@ void ff_h264_idct_add8_422_8_mmi(uint8_t **dest, const int *block_offset,
int16_t *block, int stride, const uint8_t nnzc[15*8]);
void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
int qmul);
-void ff_h264_chroma422_dc_dequant_idct_8_mmi(int16_t *block, int qmul);
void ff_h264_weight_pixels16_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
int log2_denom, int weight, int offset);
diff --git a/libavcodec/mips/h264dsp_mmi.c b/libavcodec/mips/h264dsp_mmi.c
index 1ee8ca2f1c..bae1052dcf 100644
--- a/libavcodec/mips/h264dsp_mmi.c
+++ b/libavcodec/mips/h264dsp_mmi.c
@@ -1084,39 +1084,6 @@ void ff_h264_luma_dc_dequant_idct_8_mmi(int16_t *output, int16_t *input,
);
}
-void ff_h264_chroma422_dc_dequant_idct_8_mmi(int16_t *block, int qmul)
-{
- int temp[8];
- int t[8];
-
- temp[0] = block[0] + block[16];
- temp[1] = block[0] - block[16];
- temp[2] = block[32] + block[48];
- temp[3] = block[32] - block[48];
- temp[4] = block[64] + block[80];
- temp[5] = block[64] - block[80];
- temp[6] = block[96] + block[112];
- temp[7] = block[96] - block[112];
-
- t[0] = temp[0] + temp[4] + temp[2] + temp[6];
- t[1] = temp[0] - temp[4] + temp[2] - temp[6];
- t[2] = temp[0] - temp[4] - temp[2] + temp[6];
- t[3] = temp[0] + temp[4] - temp[2] - temp[6];
- t[4] = temp[1] + temp[5] + temp[3] + temp[7];
- t[5] = temp[1] - temp[5] + temp[3] - temp[7];
- t[6] = temp[1] - temp[5] - temp[3] + temp[7];
- t[7] = temp[1] + temp[5] - temp[3] - temp[7];
-
- block[ 0]= (t[0]*qmul + 128) >> 8;
- block[ 32]= (t[1]*qmul + 128) >> 8;
- block[ 64]= (t[2]*qmul + 128) >> 8;
- block[ 96]= (t[3]*qmul + 128) >> 8;
- block[ 16]= (t[4]*qmul + 128) >> 8;
- block[ 48]= (t[5]*qmul + 128) >> 8;
- block[ 80]= (t[6]*qmul + 128) >> 8;
- block[112]= (t[7]*qmul + 128) >> 8;
-}
-
void ff_h264_weight_pixels16_8_mmi(uint8_t *block, ptrdiff_t stride, int height,
int log2_denom, int weight, int offset)
{
--
2.45.2
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit chroma DC dequant
2024-07-07 11:44 [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit chroma DC dequant Rémi Denis-Courmont
2024-07-07 11:44 ` [FFmpeg-devel] [PATCH 2/2] lavc/h264dsp: remove MMI 8-bit 4:2:2 " Rémi Denis-Courmont
@ 2024-07-07 11:58 ` Rémi Denis-Courmont
1 sibling, 0 replies; 3+ messages in thread
From: Rémi Denis-Courmont @ 2024-07-07 11:58 UTC (permalink / raw)
To: ffmpeg-devel
Le sunnuntaina 7. heinäkuuta 2024, 14.44.47 EEST Rémi Denis-Courmont a écrit :
> The function is exactly identical to the C reference, only with the
> constant propagated manually. It does not optimise anything.
There are presently no (other) implementations for
`H264DSPContext.h264_chroma_dc_dequant_idct`, which is used by H.264 and SVQ3
decoders. I don't know if we should keep the pointers anyway or just hard-code
the calls to the C implementation.
I am not sure if it would be possible to marginally optimise the functions
with scalar product or matrix extensions... at least those extensions that do
support widening 16x16 multiplications. (This is unfortunately not a given.
With the AI/ML hype,16-bit floats, 8-bit and/or 4-bit integers are the more
commonly supported types.)
--
Rémi Denis-Courmont
http://www.remlab.net/
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-07 11:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-07 11:44 [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit chroma DC dequant Rémi Denis-Courmont
2024-07-07 11:44 ` [FFmpeg-devel] [PATCH 2/2] lavc/h264dsp: remove MMI 8-bit 4:2:2 " Rémi Denis-Courmont
2024-07-07 11:58 ` [FFmpeg-devel] [PATCH 1/2] lavc/h264dsp: remove MMI 8-bit " Rémi Denis-Courmont
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git