History

avcodec/mpegvideo: Move unquantize functions into a file of their own

This is in preparation for only keeping the actually used unquantize functions in MpegEncContext.

Andreas Rheinhardt committed 1 year ago

Commit 63864541 parent 34b624d10 files · +318 −240Browse files

Unified · Split

10 files
  1. libavcodec/Makefile +1 −0
  2. libavcodec/arm/mpegvideo_arm.c +1 −0
  3. libavcodec/mips/mpegvideo_init_mips.c +1 −0
  4. libavcodec/mpegvideo.c +2 −235
  5. libavcodec/mpegvideo.h +0 −5
  6. libavcodec/mpegvideo_unquantize.c +273 −0
  7. libavcodec/mpegvideo_unquantize.h +37 −0
  8. libavcodec/neon/mpegvideo.c +1 −0
  9. libavcodec/ppc/mpegvideo_altivec.c +1 −0
  10. libavcodec/x86/mpegvideo.c +1 −0
libavcodec/Makefile+1−0
@@ -147,6 +147,7 @@ OBJS-$(CONFIG_MPEGAUDIOHEADER) += mpegaudiodecheader.o mpegaudiotabs.o · 146 unmodified lines
147OBJS-$(CONFIG_MPEG4AUDIO) += mpeg4audio.o mpeg4audio_sample_rates.o147OBJS-$(CONFIG_MPEG4AUDIO) += mpeg4audio.o mpeg4audio_sample_rates.o
148OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o rl.o \148OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o rl.o \
149 mpegvideo_motion.o \149 mpegvideo_motion.o \
150 mpegvideo_unquantize.o \
150 mpegvideodata.o mpegpicture.o \151 mpegvideodata.o mpegpicture.o \
151 to_upper4.o152 to_upper4.o
152OBJS-$(CONFIG_MPEGVIDEODEC) += mpegvideo_dec.o mpegutils.o153OBJS-$(CONFIG_MPEGVIDEODEC) += mpegvideo_dec.o mpegutils.o
libavcodec/arm/mpegvideo_arm.c+1−0
@@ -24,6 +24,7 @@ · 23 unmodified lines
24#include "libavutil/arm/cpu.h"24#include "libavutil/arm/cpu.h"
25#include "libavcodec/avcodec.h"25#include "libavcodec/avcodec.h"
26#include "libavcodec/mpegvideo.h"26#include "libavcodec/mpegvideo.h"
27#include "libavcodec/mpegvideo_unquantize.h"
27#include "mpegvideo_arm.h"28#include "mpegvideo_arm.h"
28#include "asm-offsets.h"29#include "asm-offsets.h"
29 30
libavcodec/mips/mpegvideo_init_mips.c+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
20 20
21#include "libavutil/attributes.h"21#include "libavutil/attributes.h"
22#include "libavutil/mips/cpu.h"22#include "libavutil/mips/cpu.h"
23#include "libavcodec/mpegvideo_unquantize.h"
23#include "h263dsp_mips.h"24#include "h263dsp_mips.h"
24#include "mpegvideo_mips.h"25#include "mpegvideo_mips.h"
25 26
libavcodec/mpegvideo.c+2−235
@@ -41,221 +41,9 @@ · 40 unmodified lines
41#include "mpegutils.h"41#include "mpegutils.h"
42#include "mpegvideo.h"42#include "mpegvideo.h"
43#include "mpegvideodata.h"43#include "mpegvideodata.h"
44#include "mpegvideo_unquantize.h"
44#include "libavutil/refstruct.h"45#include "libavutil/refstruct.h"
45 46
46static void dct_unquantize_mpeg1_intra_c(MpegEncContext *s,
47 int16_t *block, int n, int qscale)
48{
49 int i, level, nCoeffs;
50 const uint16_t *quant_matrix;
51
52 nCoeffs= s->block_last_index[n];
53
54 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
55 /* XXX: only MPEG-1 */
56 quant_matrix = s->intra_matrix;
57 for(i=1;i<=nCoeffs;i++) {
58 int j= s->intra_scantable.permutated[i];
59 level = block[j];
60 if (level) {
61 if (level < 0) {
62 level = -level;
63 level = (int)(level * qscale * quant_matrix[j]) >> 3;
64 level = (level - 1) | 1;
65 level = -level;
66 } else {
67 level = (int)(level * qscale * quant_matrix[j]) >> 3;
68 level = (level - 1) | 1;
69 }
70 block[j] = level;
71 }
72 }
73}
74
75static void dct_unquantize_mpeg1_inter_c(MpegEncContext *s,
76 int16_t *block, int n, int qscale)
77{
78 int i, level, nCoeffs;
79 const uint16_t *quant_matrix;
80
81 nCoeffs= s->block_last_index[n];
82
83 quant_matrix = s->inter_matrix;
84 for(i=0; i<=nCoeffs; i++) {
85 int j= s->intra_scantable.permutated[i];
86 level = block[j];
87 if (level) {
88 if (level < 0) {
89 level = -level;
90 level = (((level << 1) + 1) * qscale *
91 ((int) (quant_matrix[j]))) >> 4;
92 level = (level - 1) | 1;
93 level = -level;
94 } else {
95 level = (((level << 1) + 1) * qscale *
96 ((int) (quant_matrix[j]))) >> 4;
97 level = (level - 1) | 1;
98 }
99 block[j] = level;
100 }
101 }
102}
103
104static void dct_unquantize_mpeg2_intra_c(MpegEncContext *s,
105 int16_t *block, int n, int qscale)
106{
107 int i, level, nCoeffs;
108 const uint16_t *quant_matrix;
109
110 if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale];
111 else qscale <<= 1;
112
113 nCoeffs= s->block_last_index[n];
114
115 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
116 quant_matrix = s->intra_matrix;
117 for(i=1;i<=nCoeffs;i++) {
118 int j= s->intra_scantable.permutated[i];
119 level = block[j];
120 if (level) {
121 if (level < 0) {
122 level = -level;
123 level = (int)(level * qscale * quant_matrix[j]) >> 4;
124 level = -level;
125 } else {
126 level = (int)(level * qscale * quant_matrix[j]) >> 4;
127 }
128 block[j] = level;
129 }
130 }
131}
132
133static void dct_unquantize_mpeg2_intra_bitexact(MpegEncContext *s,
134 int16_t *block, int n, int qscale)
135{
136 int i, level, nCoeffs;
137 const uint16_t *quant_matrix;
138 int sum=-1;
139
140 if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale];
141 else qscale <<= 1;
142
143 nCoeffs= s->block_last_index[n];
144
145 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
146 sum += block[0];
147 quant_matrix = s->intra_matrix;
148 for(i=1;i<=nCoeffs;i++) {
149 int j= s->intra_scantable.permutated[i];
150 level = block[j];
151 if (level) {
152 if (level < 0) {
153 level = -level;
154 level = (int)(level * qscale * quant_matrix[j]) >> 4;
155 level = -level;
156 } else {
157 level = (int)(level * qscale * quant_matrix[j]) >> 4;
158 }
159 block[j] = level;
160 sum+=level;
161 }
162 }
163 block[63]^=sum&1;
164}
165
166static void dct_unquantize_mpeg2_inter_c(MpegEncContext *s,
167 int16_t *block, int n, int qscale)
168{
169 int i, level, nCoeffs;
170 const uint16_t *quant_matrix;
171 int sum=-1;
172
173 if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale];
174 else qscale <<= 1;
175
176 nCoeffs= s->block_last_index[n];
177
178 quant_matrix = s->inter_matrix;
179 for(i=0; i<=nCoeffs; i++) {
180 int j= s->intra_scantable.permutated[i];
181 level = block[j];
182 if (level) {
183 if (level < 0) {
184 level = -level;
185 level = (((level << 1) + 1) * qscale *
186 ((int) (quant_matrix[j]))) >> 5;
187 level = -level;
188 } else {
189 level = (((level << 1) + 1) * qscale *
190 ((int) (quant_matrix[j]))) >> 5;
191 }
192 block[j] = level;
193 sum+=level;
194 }
195 }
196 block[63]^=sum&1;
197}
198
199static void dct_unquantize_h263_intra_c(MpegEncContext *s,
200 int16_t *block, int n, int qscale)
201{
202 int i, level, qmul, qadd;
203 int nCoeffs;
204
205 av_assert2(s->block_last_index[n]>=0 || s->h263_aic);
206
207 qmul = qscale << 1;
208
209 if (!s->h263_aic) {
210 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
211 qadd = (qscale - 1) | 1;
212 }else{
213 qadd = 0;
214 }
215 if(s->ac_pred)
216 nCoeffs=63;
217 else
218 nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ];
219
220 for(i=1; i<=nCoeffs; i++) {
221 level = block[i];
222 if (level) {
223 if (level < 0) {
224 level = level * qmul - qadd;
225 } else {
226 level = level * qmul + qadd;
227 }
228 block[i] = level;
229 }
230 }
231}
232
233static void dct_unquantize_h263_inter_c(MpegEncContext *s,
234 int16_t *block, int n, int qscale)
235{
236 int i, level, qmul, qadd;
237 int nCoeffs;
238
239 av_assert2(s->block_last_index[n]>=0);
240
241 qadd = (qscale - 1) | 1;
242 qmul = qscale << 1;
243
244 nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ];
245
246 for(i=0; i<=nCoeffs; i++) {
247 level = block[i];
248 if (level) {
249 if (level < 0) {
250 level = level * qmul - qadd;
251 } else {
252 level = level * qmul + qadd;
253 }
254 block[i] = level;
255 }
256 }
257}
258
259 47
260static void gray16(uint8_t *dst, const uint8_t *src, ptrdiff_t linesize, int h)48static void gray16(uint8_t *dst, const uint8_t *src, ptrdiff_t linesize, int h)
261{49{
@@ -325,28 +113,7 @@ av_cold void ff_mpv_idct_init(MpegEncContext *s) · 63 unmodified lines
325 ff_permute_scantable(s->permutated_intra_v_scantable, ff_alternate_vertical_scan,113 ff_permute_scantable(s->permutated_intra_v_scantable, ff_alternate_vertical_scan,
326 s->idsp.idct_permutation);114 s->idsp.idct_permutation);
327 115
328 s->dct_unquantize_h263_intra = dct_unquantize_h263_intra_c;116 ff_mpv_unquantize_init(s);
329 s->dct_unquantize_h263_inter = dct_unquantize_h263_inter_c;
330 s->dct_unquantize_mpeg1_intra = dct_unquantize_mpeg1_intra_c;
331 s->dct_unquantize_mpeg1_inter = dct_unquantize_mpeg1_inter_c;
332 s->dct_unquantize_mpeg2_intra = dct_unquantize_mpeg2_intra_c;
333 if (s->avctx->flags & AV_CODEC_FLAG_BITEXACT)
334 s->dct_unquantize_mpeg2_intra = dct_unquantize_mpeg2_intra_bitexact;
335 s->dct_unquantize_mpeg2_inter = dct_unquantize_mpeg2_inter_c;
336
337#if HAVE_INTRINSICS_NEON
338 ff_mpv_common_init_neon(s);
339#endif
340
341#if ARCH_ARM
342 ff_mpv_common_init_arm(s);
343#elif ARCH_PPC
344 ff_mpv_common_init_ppc(s);
345#elif ARCH_X86
346 ff_mpv_common_init_x86(s);
347#elif ARCH_MIPS
348 ff_mpv_common_init_mips(s);
349#endif
350}117}
351 118
352static av_cold int init_duplicate_context(MpegEncContext *s)119static av_cold int init_duplicate_context(MpegEncContext *s)
libavcodec/mpegvideo.h+0−5
@@ -362,11 +362,6 @@ typedef struct MpegEncContext { · 361 unmodified lines
362void ff_mpv_common_defaults(MpegEncContext *s);362void ff_mpv_common_defaults(MpegEncContext *s);
363 363
364int ff_mpv_common_init(MpegEncContext *s);364int ff_mpv_common_init(MpegEncContext *s);
365void ff_mpv_common_init_arm(MpegEncContext *s);
366void ff_mpv_common_init_neon(MpegEncContext *s);
367void ff_mpv_common_init_ppc(MpegEncContext *s);
368void ff_mpv_common_init_x86(MpegEncContext *s);
369void ff_mpv_common_init_mips(MpegEncContext *s);
370/**365/**
371 * Initialize an MpegEncContext's thread contexts. Presumes that366 * Initialize an MpegEncContext's thread contexts. Presumes that
372 * slice_context_count is already set and that all the fields367 * slice_context_count is already set and that all the fields
libavcodec/mpegvideo_unquantize.c+273−0
@@ -0,0 +1,273 @@
1/*
2 * Unquantize functions for mpegvideo
3 * Copyright (c) 2000,2001 Fabrice Bellard
4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
5 *
6 * 4MV & hq & B-frame encoding stuff by Michael Niedermayer <michaelni@gmx.at>
7 *
8 * This file is part of FFmpeg.
9 *
10 * FFmpeg is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
14 *
15 * FFmpeg is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with FFmpeg; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 */
24
25#include <stdint.h>
26
27#include "config.h"
28
29#include "libavutil/attributes.h"
30#include "libavutil/avassert.h"
31#include "avcodec.h"
32#include "mpegvideo.h"
33#include "mpegvideodata.h"
34#include "mpegvideo_unquantize.h"
35
36static void dct_unquantize_mpeg1_intra_c(MpegEncContext *s,
37 int16_t *block, int n, int qscale)
38{
39 int i, level, nCoeffs;
40 const uint16_t *quant_matrix;
41
42 nCoeffs= s->block_last_index[n];
43
44 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
45 /* XXX: only MPEG-1 */
46 quant_matrix = s->intra_matrix;
47 for(i=1;i<=nCoeffs;i++) {
48 int j= s->intra_scantable.permutated[i];
49 level = block[j];
50 if (level) {
51 if (level < 0) {
52 level = -level;
53 level = (int)(level * qscale * quant_matrix[j]) >> 3;
54 level = (level - 1) | 1;
55 level = -level;
56 } else {
57 level = (int)(level * qscale * quant_matrix[j]) >> 3;
58 level = (level - 1) | 1;
59 }
60 block[j] = level;
61 }
62 }
63}
64
65static void dct_unquantize_mpeg1_inter_c(MpegEncContext *s,
66 int16_t *block, int n, int qscale)
67{
68 int i, level, nCoeffs;
69 const uint16_t *quant_matrix;
70
71 nCoeffs= s->block_last_index[n];
72
73 quant_matrix = s->inter_matrix;
74 for(i=0; i<=nCoeffs; i++) {
75 int j= s->intra_scantable.permutated[i];
76 level = block[j];
77 if (level) {
78 if (level < 0) {
79 level = -level;
80 level = (((level << 1) + 1) * qscale *
81 ((int) (quant_matrix[j]))) >> 4;
82 level = (level - 1) | 1;
83 level = -level;
84 } else {
85 level = (((level << 1) + 1) * qscale *
86 ((int) (quant_matrix[j]))) >> 4;
87 level = (level - 1) | 1;
88 }
89 block[j] = level;
90 }
91 }
92}
93
94static void dct_unquantize_mpeg2_intra_c(MpegEncContext *s,
95 int16_t *block, int n, int qscale)
96{
97 int i, level, nCoeffs;
98 const uint16_t *quant_matrix;
99
100 if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale];
101 else qscale <<= 1;
102
103 nCoeffs= s->block_last_index[n];
104
105 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
106 quant_matrix = s->intra_matrix;
107 for(i=1;i<=nCoeffs;i++) {
108 int j= s->intra_scantable.permutated[i];
109 level = block[j];
110 if (level) {
111 if (level < 0) {
112 level = -level;
113 level = (int)(level * qscale * quant_matrix[j]) >> 4;
114 level = -level;
115 } else {
116 level = (int)(level * qscale * quant_matrix[j]) >> 4;
117 }
118 block[j] = level;
119 }
120 }
121}
122
123static void dct_unquantize_mpeg2_intra_bitexact(MpegEncContext *s,
124 int16_t *block, int n, int qscale)
125{
126 int i, level, nCoeffs;
127 const uint16_t *quant_matrix;
128 int sum=-1;
129
130 if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale];
131 else qscale <<= 1;
132
133 nCoeffs= s->block_last_index[n];
134
135 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
136 sum += block[0];
137 quant_matrix = s->intra_matrix;
138 for(i=1;i<=nCoeffs;i++) {
139 int j= s->intra_scantable.permutated[i];
140 level = block[j];
141 if (level) {
142 if (level < 0) {
143 level = -level;
144 level = (int)(level * qscale * quant_matrix[j]) >> 4;
145 level = -level;
146 } else {
147 level = (int)(level * qscale * quant_matrix[j]) >> 4;
148 }
149 block[j] = level;
150 sum+=level;
151 }
152 }
153 block[63]^=sum&1;
154}
155
156static void dct_unquantize_mpeg2_inter_c(MpegEncContext *s,
157 int16_t *block, int n, int qscale)
158{
159 int i, level, nCoeffs;
160 const uint16_t *quant_matrix;
161 int sum=-1;
162
163 if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale];
164 else qscale <<= 1;
165
166 nCoeffs= s->block_last_index[n];
167
168 quant_matrix = s->inter_matrix;
169 for(i=0; i<=nCoeffs; i++) {
170 int j= s->intra_scantable.permutated[i];
171 level = block[j];
172 if (level) {
173 if (level < 0) {
174 level = -level;
175 level = (((level << 1) + 1) * qscale *
176 ((int) (quant_matrix[j]))) >> 5;
177 level = -level;
178 } else {
179 level = (((level << 1) + 1) * qscale *
180 ((int) (quant_matrix[j]))) >> 5;
181 }
182 block[j] = level;
183 sum+=level;
184 }
185 }
186 block[63]^=sum&1;
187}
188
189static void dct_unquantize_h263_intra_c(MpegEncContext *s,
190 int16_t *block, int n, int qscale)
191{
192 int i, level, qmul, qadd;
193 int nCoeffs;
194
195 av_assert2(s->block_last_index[n]>=0 || s->h263_aic);
196
197 qmul = qscale << 1;
198
199 if (!s->h263_aic) {
200 block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale;
201 qadd = (qscale - 1) | 1;
202 }else{
203 qadd = 0;
204 }
205 if(s->ac_pred)
206 nCoeffs=63;
207 else
208 nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ];
209
210 for(i=1; i<=nCoeffs; i++) {
211 level = block[i];
212 if (level) {
213 if (level < 0) {
214 level = level * qmul - qadd;
215 } else {
216 level = level * qmul + qadd;
217 }
218 block[i] = level;
219 }
220 }
221}
222
223static void dct_unquantize_h263_inter_c(MpegEncContext *s,
224 int16_t *block, int n, int qscale)
225{
226 int i, level, qmul, qadd;
227 int nCoeffs;
228
229 av_assert2(s->block_last_index[n]>=0);
230
231 qadd = (qscale - 1) | 1;
232 qmul = qscale << 1;
233
234 nCoeffs= s->inter_scantable.raster_end[ s->block_last_index[n] ];
235
236 for(i=0; i<=nCoeffs; i++) {
237 level = block[i];
238 if (level) {
239 if (level < 0) {
240 level = level * qmul - qadd;
241 } else {
242 level = level * qmul + qadd;
243 }
244 block[i] = level;
245 }
246 }
247}
248
249av_cold void ff_mpv_unquantize_init(MpegEncContext *s)
250{
251 s->dct_unquantize_h263_intra = dct_unquantize_h263_intra_c;
252 s->dct_unquantize_h263_inter = dct_unquantize_h263_inter_c;
253 s->dct_unquantize_mpeg1_intra = dct_unquantize_mpeg1_intra_c;
254 s->dct_unquantize_mpeg1_inter = dct_unquantize_mpeg1_inter_c;
255 s->dct_unquantize_mpeg2_intra = dct_unquantize_mpeg2_intra_c;
256 if (s->avctx->flags & AV_CODEC_FLAG_BITEXACT)
257 s->dct_unquantize_mpeg2_intra = dct_unquantize_mpeg2_intra_bitexact;
258 s->dct_unquantize_mpeg2_inter = dct_unquantize_mpeg2_inter_c;
259
260#if HAVE_INTRINSICS_NEON
261 ff_mpv_common_init_neon(s);
262#endif
263
264#if ARCH_ARM
265 ff_mpv_common_init_arm(s);
266#elif ARCH_PPC
267 ff_mpv_common_init_ppc(s);
268#elif ARCH_X86
269 ff_mpv_common_init_x86(s);
270#elif ARCH_MIPS
271 ff_mpv_common_init_mips(s);
272#endif
273}
libavcodec/mpegvideo_unquantize.h+37−0
@@ -0,0 +1,37 @@
1/*
2 * Unquantize functions for mpegvideo
3 * Copyright (c) 2000,2001 Fabrice Bellard
4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
5 *
6 * 4MV & hq & B-frame encoding stuff by Michael Niedermayer <michaelni@gmx.at>
7 *
8 * This file is part of FFmpeg.
9 *
10 * FFmpeg is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
14 *
15 * FFmpeg is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with FFmpeg; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 */
24
25#ifndef AVCODEC_MPEGVIDEO_UNQUANTIZE_H
26#define AVCODEC_MPEGVIDEO_UNQUANTIZE_H
27
28typedef struct MpegEncContext MpegEncContext;
29
30void ff_mpv_unquantize_init(MpegEncContext *s);
31void ff_mpv_common_init_arm(MpegEncContext *s);
32void ff_mpv_common_init_neon(MpegEncContext *s);
33void ff_mpv_common_init_ppc(MpegEncContext *s);
34void ff_mpv_common_init_x86(MpegEncContext *s);
35void ff_mpv_common_init_mips(MpegEncContext *s);
36
37#endif /* AVCODEC_MPEGVIDEO_UNQUANTIZE_H */
libavcodec/neon/mpegvideo.c+1−0
@@ -32,6 +32,7 @@ · 31 unmodified lines
32#endif32#endif
33 33
34#include "libavcodec/mpegvideo.h"34#include "libavcodec/mpegvideo.h"
35#include "libavcodec/mpegvideo_unquantize.h"
35 36
36static void inline ff_dct_unquantize_h263_neon(int qscale, int qadd, int nCoeffs,37static void inline ff_dct_unquantize_h263_neon(int qscale, int qadd, int nCoeffs,
37 int16_t *block)38 int16_t *block)
libavcodec/ppc/mpegvideo_altivec.c+1−0
@@ -33,6 +33,7 @@ · 32 unmodified lines
33#include "libavutil/ppc/util_altivec.h"33#include "libavutil/ppc/util_altivec.h"
34 34
35#include "libavcodec/mpegvideo.h"35#include "libavcodec/mpegvideo.h"
36#include "libavcodec/mpegvideo_unquantize.h"
36 37
37#if HAVE_ALTIVEC38#if HAVE_ALTIVEC
38 39
libavcodec/x86/mpegvideo.c+1−0
@@ -26,6 +26,7 @@ · 25 unmodified lines
26#include "libavcodec/avcodec.h"26#include "libavcodec/avcodec.h"
27#include "libavcodec/mpegvideo.h"27#include "libavcodec/mpegvideo.h"
28#include "libavcodec/mpegvideodata.h"28#include "libavcodec/mpegvideodata.h"
29#include "libavcodec/mpegvideo_unquantize.h"
29 30
30#if HAVE_MMX_INLINE31#if HAVE_MMX_INLINE
31 32

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t