48
#include "libMpeg2Dec/video_out.h"
48
#include "ADM_libMpeg2Dec/video_out.h"
53
#include "libMpeg2Dec/mpeg2.h"
54
#include "libMpeg2Dec/mpeg2_internal.h"
53
#include "ADM_libMpeg2Dec/mpeg2.h"
54
#include "ADM_libMpeg2Dec/mpeg2_internal.h"
55
55
#include <ADM_assert.h>
56
#include "ADM_toolkit/ADM_debugID.h"
56
#include "ADM_osSupport/ADM_debugID.h"
57
57
#define MODULE_NAME MODULE_CODEC
58
#include "ADM_toolkit/ADM_debug.h"
58
#include "ADM_osSupport/ADM_debug.h"
61
61
extern void mpeg2_pop (mpeg2dec_t * m);
86
static uint8_t *iBuff[3];
87
static uint8_t *oBuff[3];
88
static int strideTab[3], strideTab2[3];
90
decoderMpeg::~decoderMpeg ()
86
decoderMpeg::~decoderMpeg()
92
#warning clean up libmpeg2 here
89
delete[] unpackBuffer;
96
97
//____________________________________
97
98
uint8_t decoderMpeg::isMpeg1 (void)
132
134
Constructor for mpeg decoder
133
135
______________________________________________________________________________________
135
decoderMpeg::decoderMpeg (uint32_t w, uint32_t h, uint32_t extraLen, uint8_t * extraData):decoders (w,
137
decoderMpeg::decoderMpeg (uint32_t w, uint32_t h, uint32_t extraLen, uint8_t * extraData) : decoders (w,h)
146
_seqHeader = new uint8_t[extraLen];
147
memcpy (_seqHeader, extraData, extraLen);
153
// store for future use
155
par_width=par_height=1;
156
postprocessed = NULL;
158
printf ("\n initializing mpeg2 decoder %lu x %lu\n", _w, _h);
159
output = yv12_open ();
160
inst = (yv12_instance_t *) output;
161
unpackBuffer = new uint8_t[(w * h * 9) >> 1];
162
inst->buffer = unpackBuffer;
163
_decoder = mpeg2_init ();
164
dec = &((MPEG2DEC)->decoder);
165
wmb = (_w + 15) >> 4;;
166
hmb = (_h + 15) >> 4;;
167
dec->quant_stride = wmb;
168
dec->quant = (int8_t *) ADM_alloc ((wmb * hmb) * sizeof (int8_t));
170
feedData (extraLen, _seqHeader);
171
feedData (extraLen, _seqHeader);
173
// Post processing settings
174
//___________________________
177
// Post Proc is disabled by default
179
printf ("\n done\n");
139
mpeg2_decoder_t *dec;
141
yv12_instance_t *inst;
147
_seqHeader = new uint8_t[extraLen];
148
memcpy (_seqHeader, extraData, extraLen);
153
// store for future use
155
par_width=par_height=1;
157
printf ("\nInitializing MPEG2 decoder %lu x %lu\n", _w, _h);
158
output = yv12_open ();
159
inst = (yv12_instance_t *) output;
160
unpackBuffer = new uint8_t[(w * h * 9) >> 1];
161
inst->buffer = unpackBuffer;
162
_decoder = mpeg2_init();
163
dec = &((MPEG2DEC)->decoder);
165
wmb = (_w + 15) >> 4;;
166
hmb = (_h + 15) >> 4;;
168
dec->quant_stride = wmb;
169
dec->quant = (int8_t *)ADM_alloc ((wmb * hmb) * sizeof (int8_t));
171
feedData (extraLen, _seqHeader);
172
feedData (extraLen, _seqHeader);
174
// Post processing settings
176
// Post Proc is disabled by default
182
180
/*------------------------------------------------------------------*/
184
decoderMpeg::uncompress (uint8_t * in, ADMImage * out, uint32_t len,
182
decoderMpeg::uncompress (ADMCompressedImage * in, ADMImage * out)
189
186
#if defined( REMOVE_PADDING)
190
187
while (*(in + len - 1) == 0)
195
192
if (!dontcopy ())
196
feedData (in->dataLength, in->data);
201
198
const mpeg2_info_t *info;