annotate mdec.c @ 8520:a0164882aa38 libavcodec

Generic metadata API. avi is updated as example. No version bump, the API still might change slightly ... No update to ffmpeg.c as requested by aurel.
author michael
date Sun, 04 Jan 2009 18:48:37 +0000
parents d6390123201d
children e9d9d946f213
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
1 /*
7629
1d04f38681bd cosmetics: comment spelling/grammar fixes
diego
parents: 7623
diff changeset
2 * Sony PlayStation MDEC (Motion DECoder)
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
3 * Copyright (c) 2003 Michael Niedermayer
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
4 *
5214
470601203f44 Group all copyright and author notices together.
diego
parents: 5210
diff changeset
5 * based upon code from Sebastian Jedruszkiewicz <elf@frogger.rules.pl>
470601203f44 Group all copyright and author notices together.
diego
parents: 5210
diff changeset
6 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3089
diff changeset
7 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3089
diff changeset
8 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3089
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3089
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
13 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3089
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
17 * Lesser General Public License for more details.
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
18 *
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3089
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2967
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
22 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
23
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
24 /**
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
25 * @file mdec.c
7629
1d04f38681bd cosmetics: comment spelling/grammar fixes
diego
parents: 7623
diff changeset
26 * Sony PlayStation MDEC (Motion DECoder)
1d04f38681bd cosmetics: comment spelling/grammar fixes
diego
parents: 7623
diff changeset
27 * This is very similar to intra-only MPEG-1.
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
28 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
29
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
30 #include "avcodec.h"
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
31 #include "dsputil.h"
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
32 #include "mpegvideo.h"
7623
0bd920dcb7a5 Untangle mpeg12.c and mdec.c so that mdec.c can be compiled separately.
diego
parents: 7153
diff changeset
33 #include "mpeg12.h"
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
34
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
35 typedef struct MDECContext{
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
36 AVCodecContext *avctx;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
37 DSPContext dsp;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
38 AVFrame picture;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
39 GetBitContext gb;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
40 ScanTable scantable;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
41 int version;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
42 int qscale;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
43 int last_dc[3];
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
44 int mb_width;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
45 int mb_height;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
46 int mb_x, mb_y;
6571
ad0c77d2b6ee Increase alignment for DCT block arrays from 8 to 16
superdump
parents: 6517
diff changeset
47 DECLARE_ALIGNED_16(DCTELEM, block[6][64]);
3089
072dbc669253 MSVC-compatible __align8/__align16 declaration
diego
parents: 3066
diff changeset
48 DECLARE_ALIGNED_8(uint16_t, intra_matrix[64]);
072dbc669253 MSVC-compatible __align8/__align16 declaration
diego
parents: 3066
diff changeset
49 DECLARE_ALIGNED_8(int, q_intra_matrix[64]);
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
50 uint8_t *bitstream_buffer;
3066
04b924f8f5a5 warning fixes by Luca Abeni, lucabe72 ##@## email ##.## it
diego
parents: 3036
diff changeset
51 unsigned int bitstream_buffer_size;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
52 int block_last_index[6];
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
53 } MDECContext;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
54
7629
1d04f38681bd cosmetics: comment spelling/grammar fixes
diego
parents: 7623
diff changeset
55 //very similar to MPEG-1
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
56 static inline int mdec_decode_block_intra(MDECContext *a, DCTELEM *block, int n)
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
57 {
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
58 int level, diff, i, j, run;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
59 int component;
5210
b52fd9b223bb add proper ff_ prefix to new extern symbols
aurel
parents: 3947
diff changeset
60 RLTable *rl = &ff_rl_mpeg1;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
61 uint8_t * const scantable= a->scantable.permutated;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
62 const uint16_t *quant_matrix= ff_mpeg1_default_intra_matrix;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
63 const int qscale= a->qscale;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
64
7629
1d04f38681bd cosmetics: comment spelling/grammar fixes
diego
parents: 7623
diff changeset
65 /* DC coefficient */
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
66 if(a->version==2){
1437
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
67 block[0]= 2*get_sbits(&a->gb, 10) + 1024;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
68 }else{
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
69 component = (n <= 3 ? 0 : n - 4 + 1);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
70 diff = decode_dc(&a->gb, component);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
71 if (diff >= 0xffff)
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
72 return -1;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
73 a->last_dc[component]+= diff;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
74 block[0] = a->last_dc[component]<<3;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
75 }
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
76
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
77 i = 0;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
78 {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
79 OPEN_READER(re, &a->gb);
7629
1d04f38681bd cosmetics: comment spelling/grammar fixes
diego
parents: 7623
diff changeset
80 /* now quantify & encode AC coefficients */
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
81 for(;;) {
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
82 UPDATE_CACHE(re, &a->gb);
2615
0d88e3f89379 avoid UPDATE_CACHE() in GET_RL_VLC() if not needed
michael
parents: 2453
diff changeset
83 GET_RL_VLC(level, run, re, &a->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
84
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
85 if(level == 127){
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
86 break;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
87 } else if(level != 0) {
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
88 i += run;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
89 j = scantable[i];
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
90 level= (level*qscale*quant_matrix[j])>>3;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
91 level = (level ^ SHOW_SBITS(re, &a->gb, 1)) - SHOW_SBITS(re, &a->gb, 1);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
92 LAST_SKIP_BITS(re, &a->gb, 1);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
93 } else {
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
94 /* escape */
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
95 run = SHOW_UBITS(re, &a->gb, 6)+1; LAST_SKIP_BITS(re, &a->gb, 6);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
96 UPDATE_CACHE(re, &a->gb);
1436
b57e910e4235 some fixes (still buggy though)
michaelni
parents: 1435
diff changeset
97 level = SHOW_SBITS(re, &a->gb, 10); SKIP_BITS(re, &a->gb, 10);
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
98 i += run;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
99 j = scantable[i];
1437
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
100 if(level<0){
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
101 level= -level;
1437
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
102 level= (level*qscale*quant_matrix[j])>>3;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
103 level= (level-1)|1;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
104 level= -level;
1437
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
105 }else{
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
106 level= (level*qscale*quant_matrix[j])>>3;
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
107 level= (level-1)|1;
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
108 }
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
109 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
110 if (i > 63){
1598
932d306bf1dc av_log() patch by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents: 1532
diff changeset
111 av_log(a->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
112 return -1;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
113 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
114
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
115 block[j] = level;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
116 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
117 CLOSE_READER(re, &a->gb);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
118 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
119 a->block_last_index[n] = i;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
120 return 0;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
121 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
122
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
123 static inline int decode_mb(MDECContext *a, DCTELEM block[6][64]){
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
124 int i;
1438
michaelni
parents: 1437
diff changeset
125 const int block_index[6]= {5,4,0,1,2,3};
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
126
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
127 a->dsp.clear_blocks(block[0]);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
128
1437
ba444d478ffe more fixes
michaelni
parents: 1436
diff changeset
129 for(i=0; i<6; i++){
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
130 if( mdec_decode_block_intra(a, block[ block_index[i] ], block_index[i]) < 0)
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
131 return -1;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
132 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
133 return 0;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
134 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
135
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
136 static inline void idct_put(MDECContext *a, int mb_x, int mb_y){
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
137 DCTELEM (*block)[64]= a->block;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
138 int linesize= a->picture.linesize[0];
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
139
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
140 uint8_t *dest_y = a->picture.data[0] + (mb_y * 16* linesize ) + mb_x * 16;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
141 uint8_t *dest_cb = a->picture.data[1] + (mb_y * 8 * a->picture.linesize[1]) + mb_x * 8;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
142 uint8_t *dest_cr = a->picture.data[2] + (mb_y * 8 * a->picture.linesize[2]) + mb_x * 8;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
143
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
144 a->dsp.idct_put(dest_y , linesize, block[0]);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
145 a->dsp.idct_put(dest_y + 8, linesize, block[1]);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
146 a->dsp.idct_put(dest_y + 8*linesize , linesize, block[2]);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
147 a->dsp.idct_put(dest_y + 8*linesize + 8, linesize, block[3]);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
148
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
149 if(!(a->avctx->flags&CODEC_FLAG_GRAY)){
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
150 a->dsp.idct_put(dest_cb, a->picture.linesize[1], block[4]);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
151 a->dsp.idct_put(dest_cr, a->picture.linesize[2], block[5]);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
152 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
153 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
154
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
155 static int decode_frame(AVCodecContext *avctx,
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
156 void *data, int *data_size,
6220
michael
parents: 5986
diff changeset
157 const uint8_t *buf, int buf_size)
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
158 {
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
159 MDECContext * const a = avctx->priv_data;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
160 AVFrame *picture = data;
7153
a702d2a5892f Remove pointless AVFrame* casting.
astrange
parents: 7152
diff changeset
161 AVFrame * const p= &a->picture;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
162 int i;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
163
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
164 if(p->data[0])
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
165 avctx->release_buffer(avctx, p);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
166
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
167 p->reference= 0;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
168 if(avctx->get_buffer(avctx, p) < 0){
1598
932d306bf1dc av_log() patch by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents: 1532
diff changeset
169 av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
170 return -1;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
171 }
6481
493dc59d469a add FF_ prefix to all (frame)_TYPE usage
aurel
parents: 6220
diff changeset
172 p->pict_type= FF_I_TYPE;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
173 p->key_frame= 1;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
174
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
175 a->bitstream_buffer= av_fast_realloc(a->bitstream_buffer, &a->bitstream_buffer_size, buf_size + FF_INPUT_BUFFER_PADDING_SIZE);
1431
e2f288bcfaa4 10l (big vs. little endian)
michaelni
parents: 1419
diff changeset
176 for(i=0; i<buf_size; i+=2){
e2f288bcfaa4 10l (big vs. little endian)
michaelni
parents: 1419
diff changeset
177 a->bitstream_buffer[i] = buf[i+1];
e2f288bcfaa4 10l (big vs. little endian)
michaelni
parents: 1419
diff changeset
178 a->bitstream_buffer[i+1]= buf[i ];
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
179 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
180 init_get_bits(&a->gb, a->bitstream_buffer, buf_size*8);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
181
1435
62c797a19bdf skip preamble bytes
tmmm
parents: 1431
diff changeset
182 /* skip over 4 preamble bytes in stream (typically 0xXX 0xXX 0x00 0x38) */
62c797a19bdf skip preamble bytes
tmmm
parents: 1431
diff changeset
183 skip_bits(&a->gb, 32);
62c797a19bdf skip preamble bytes
tmmm
parents: 1431
diff changeset
184
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
185 a->qscale= get_bits(&a->gb, 16);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
186 a->version= get_bits(&a->gb, 16);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
187
5986
da1e68b0e975 Fix missing chroma in version 3 STR.
benoit
parents: 5214
diff changeset
188 a->last_dc[0]=
da1e68b0e975 Fix missing chroma in version 3 STR.
benoit
parents: 5214
diff changeset
189 a->last_dc[1]=
da1e68b0e975 Fix missing chroma in version 3 STR.
benoit
parents: 5214
diff changeset
190 a->last_dc[2]= 128;
da1e68b0e975 Fix missing chroma in version 3 STR.
benoit
parents: 5214
diff changeset
191
1436
b57e910e4235 some fixes (still buggy though)
michaelni
parents: 1435
diff changeset
192 for(a->mb_x=0; a->mb_x<a->mb_width; a->mb_x++){
b57e910e4235 some fixes (still buggy though)
michaelni
parents: 1435
diff changeset
193 for(a->mb_y=0; a->mb_y<a->mb_height; a->mb_y++){
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
194 if( decode_mb(a, a->block) <0)
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
195 return -1;
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
196
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
197 idct_put(a, a->mb_x, a->mb_y);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
198 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
199 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
200
7150
23f0a0b1b4f5 Export qscale so that postprocessing works.
astrange
parents: 7149
diff changeset
201 p->quality= a->qscale * FF_QP2LAMBDA;
23f0a0b1b4f5 Export qscale so that postprocessing works.
astrange
parents: 7149
diff changeset
202 memset(p->qscale_table, a->qscale, p->qstride*a->mb_height);
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
203
7153
a702d2a5892f Remove pointless AVFrame* casting.
astrange
parents: 7152
diff changeset
204 *picture = a->picture;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
205 *data_size = sizeof(AVPicture);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
206
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
207 return (get_bits_count(&a->gb)+31)/32*4;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
208 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
209
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 6481
diff changeset
210 static av_cold void mdec_common_init(AVCodecContext *avctx){
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
211 MDECContext * const a = avctx->priv_data;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
212
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
213 dsputil_init(&a->dsp, avctx);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
214
2270
21f450be6cb5 lowres width/height cleanup 3rd try
michael
parents: 2029
diff changeset
215 a->mb_width = (avctx->coded_width + 15) / 16;
21f450be6cb5 lowres width/height cleanup 3rd try
michael
parents: 2029
diff changeset
216 a->mb_height = (avctx->coded_height + 15) / 16;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
217
7153
a702d2a5892f Remove pointless AVFrame* casting.
astrange
parents: 7152
diff changeset
218 avctx->coded_frame= &a->picture;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
219 a->avctx= avctx;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
220 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
221
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 6481
diff changeset
222 static av_cold int decode_init(AVCodecContext *avctx){
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
223 MDECContext * const a = avctx->priv_data;
7153
a702d2a5892f Remove pointless AVFrame* casting.
astrange
parents: 7152
diff changeset
224 AVFrame *p= &a->picture;
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
225
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
226 mdec_common_init(avctx);
7630
d6390123201d Rename ff_init_vlcs function to the more descriptive name ff_mpeg12_init_vlcs.
diego
parents: 7629
diff changeset
227 ff_mpeg12_init_vlcs();
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
228 ff_init_scantable(a->dsp.idct_permutation, &a->scantable, ff_zigzag_direct);
7151
4b1c14a839a7 Remove commented-out code.
astrange
parents: 7150
diff changeset
229
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
230 p->qstride= a->mb_width;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
231 p->qscale_table= av_mallocz( p->qstride * a->mb_height);
2832
89b92f0800ab set pix_fmt
michael
parents: 2615
diff changeset
232 avctx->pix_fmt= PIX_FMT_YUV420P;
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
233
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
234 return 0;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
235 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
236
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 6481
diff changeset
237 static av_cold int decode_end(AVCodecContext *avctx){
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
238 MDECContext * const a = avctx->priv_data;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
239
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
240 av_freep(&a->bitstream_buffer);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
241 av_freep(&a->picture.qscale_table);
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
242 a->bitstream_buffer_size=0;
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2832
diff changeset
243
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
244 return 0;
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
245 }
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
246
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
247 AVCodec mdec_decoder = {
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
248 "mdec",
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
249 CODEC_TYPE_VIDEO,
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
250 CODEC_ID_MDEC,
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
251 sizeof(MDECContext),
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
252 decode_init,
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
253 NULL,
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
254 decode_end,
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
255 decode_frame,
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
256 CODEC_CAP_DR1,
7040
e943e1409077 Make AVCodec long_names definition conditional depending on CONFIG_SMALL.
stefano
parents: 6798
diff changeset
257 .long_name= NULL_IF_CONFIG_SMALL("Sony PlayStation MDEC (Motion DECoder)"),
1410
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
258 };
524c904a66b8 PSX MDEC decoder, based upon some code from Sebastian Jedruszkiewicz <elf at frogger dot rules dot pl>
michaelni
parents:
diff changeset
259