Originally committed as revision 2975 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
@@ -36,9 +36,6 @@ | |||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | #include "dsputil.h" | ||||
#define printf(...) {} //(f)printf() usage is forbidden in libavcodec, use av_log | |||||
#define fprintf(...) {} | |||||
#define CPAIR 2 | #define CPAIR 2 | ||||
#define CQUAD 4 | #define CQUAD 4 | ||||
#define COCTET 8 | #define COCTET 8 | ||||
@@ -75,7 +72,7 @@ typedef struct SmcContext { | |||||
total_blocks--; \ | total_blocks--; \ | ||||
if (total_blocks < 0) \ | if (total_blocks < 0) \ | ||||
{ \ | { \ | ||||
printf("warning: block counter just went negative (this should not happen)\n"); \ | |||||
av_log(s->avctx, AV_LOG_INFO, "warning: block counter just went negative (this should not happen)\n"); \ | |||||
return; \ | return; \ | ||||
} \ | } \ | ||||
} | } | ||||
@@ -124,7 +121,7 @@ static void smc_decode_stream(SmcContext *s) | |||||
chunk_size = BE_32(&s->buf[stream_ptr]) & 0x00FFFFFF; | chunk_size = BE_32(&s->buf[stream_ptr]) & 0x00FFFFFF; | ||||
stream_ptr += 4; | stream_ptr += 4; | ||||
if (chunk_size != s->size) | if (chunk_size != s->size) | ||||
printf("warning: MOV chunk size != encoded chunk size (%d != %d); using MOV chunk size\n", | |||||
av_log(s->avctx, AV_LOG_INFO, "warning: MOV chunk size != encoded chunk size (%d != %d); using MOV chunk size\n", | |||||
chunk_size, s->size); | chunk_size, s->size); | ||||
chunk_size = s->size; | chunk_size = s->size; | ||||
@@ -135,13 +132,13 @@ static void smc_decode_stream(SmcContext *s) | |||||
/* sanity checks */ | /* sanity checks */ | ||||
/* make sure stream ptr hasn't gone out of bounds */ | /* make sure stream ptr hasn't gone out of bounds */ | ||||
if (stream_ptr > chunk_size) { | if (stream_ptr > chunk_size) { | ||||
printf("SMC decoder just went out of bounds (stream ptr = %d, chunk size = %d)\n", | |||||
av_log(s->avctx, AV_LOG_INFO, "SMC decoder just went out of bounds (stream ptr = %d, chunk size = %d)\n", | |||||
stream_ptr, chunk_size); | stream_ptr, chunk_size); | ||||
return; | return; | ||||
} | } | ||||
/* make sure the row pointer hasn't gone wild */ | /* make sure the row pointer hasn't gone wild */ | ||||
if (row_ptr >= image_size) { | if (row_ptr >= image_size) { | ||||
printf("SMC decoder just went out of bounds (row ptr = %d, height = %d)\n", | |||||
av_log(s->avctx, AV_LOG_INFO, "SMC decoder just went out of bounds (row ptr = %d, height = %d)\n", | |||||
row_ptr, image_size); | row_ptr, image_size); | ||||
return; | return; | ||||
} | } | ||||
@@ -164,7 +161,7 @@ static void smc_decode_stream(SmcContext *s) | |||||
/* sanity check */ | /* sanity check */ | ||||
if ((row_ptr == 0) && (pixel_ptr == 0)) { | if ((row_ptr == 0) && (pixel_ptr == 0)) { | ||||
printf("encountered repeat block opcode (%02X) but no blocks rendered yet\n", | |||||
av_log(s->avctx, AV_LOG_INFO, "encountered repeat block opcode (%02X) but no blocks rendered yet\n", | |||||
opcode & 0xF0); | opcode & 0xF0); | ||||
break; | break; | ||||
} | } | ||||
@@ -198,7 +195,7 @@ static void smc_decode_stream(SmcContext *s) | |||||
/* sanity check */ | /* sanity check */ | ||||
if ((row_ptr == 0) && (pixel_ptr < 2 * 4)) { | if ((row_ptr == 0) && (pixel_ptr < 2 * 4)) { | ||||
printf("encountered repeat block opcode (%02X) but not enough blocks rendered yet\n", | |||||
av_log(s->avctx, AV_LOG_INFO, "encountered repeat block opcode (%02X) but not enough blocks rendered yet\n", | |||||
opcode & 0xF0); | opcode & 0xF0); | ||||
break; | break; | ||||
} | } | ||||
@@ -425,7 +422,7 @@ static void smc_decode_stream(SmcContext *s) | |||||
break; | break; | ||||
case 0xF0: | case 0xF0: | ||||
printf("0xF0 opcode seen in SMC chunk (xine developers would like to know)\n"); | |||||
av_log(s->avctx, AV_LOG_INFO, "0xF0 opcode seen in SMC chunk (contact the developers)\n"); | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
@@ -462,7 +459,7 @@ static int smc_decode_frame(AVCodecContext *avctx, | |||||
s->frame.buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_PRESERVE | | s->frame.buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_PRESERVE | | ||||
FF_BUFFER_HINTS_REUSABLE | FF_BUFFER_HINTS_READABLE; | FF_BUFFER_HINTS_REUSABLE | FF_BUFFER_HINTS_READABLE; | ||||
if (avctx->reget_buffer(avctx, &s->frame)) { | if (avctx->reget_buffer(avctx, &s->frame)) { | ||||
printf ("reget_buffer() failed\n"); | |||||
av_log(s->avctx, AV_LOG_ERROR, "reget_buffer() failed\n"); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -36,9 +36,6 @@ | |||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | #include "dsputil.h" | ||||
#define printf(...) {} //(f)printf() usage is forbidden in libavcodec, use av_log | |||||
#define fprintf(...) {} | |||||
#include "truemotion1data.h" | #include "truemotion1data.h" | ||||
typedef struct TrueMotion1Context { | typedef struct TrueMotion1Context { | ||||
@@ -232,7 +229,7 @@ static int truemotion1_decode_header(TrueMotion1Context *s) | |||||
header.header_size = ((s->buf[0] >> 5) | (s->buf[0] << 3)) & 0x7f; | header.header_size = ((s->buf[0] >> 5) | (s->buf[0] << 3)) & 0x7f; | ||||
if (s->buf[0] < 0x10) | if (s->buf[0] < 0x10) | ||||
{ | { | ||||
printf("invalid header size\n"); | |||||
av_log(s->avctx, AV_LOG_ERROR, "invalid header size\n"); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -282,7 +279,7 @@ static int truemotion1_decode_header(TrueMotion1Context *s) | |||||
} | } | ||||
if (header.compression > 17) { | if (header.compression > 17) { | ||||
printf("invalid compression type (%d)\n", header.compression); | |||||
av_log(s->avctx, AV_LOG_ERROR, "invalid compression type (%d)\n", header.compression); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -296,7 +293,7 @@ static int truemotion1_decode_header(TrueMotion1Context *s) | |||||
if (header.vectable < 4) | if (header.vectable < 4) | ||||
sel_vector_table = tables[header.vectable - 1]; | sel_vector_table = tables[header.vectable - 1]; | ||||
else { | else { | ||||
printf("invalid vector table id (%d)\n", header.vectable); | |||||
av_log(s->avctx, AV_LOG_ERROR, "invalid vector table id (%d)\n", header.vectable); | |||||
return -1; | return -1; | ||||
} | } | ||||
} | } | ||||
@@ -305,7 +302,7 @@ static int truemotion1_decode_header(TrueMotion1Context *s) | |||||
{ | { | ||||
if (compression_types[header.compression].algorithm == ALGO_RGB24H) | if (compression_types[header.compression].algorithm == ALGO_RGB24H) | ||||
{ | { | ||||
printf("24bit compression not yet supported\n"); | |||||
av_log(s->avctx, AV_LOG_ERROR, "24bit compression not yet supported\n"); | |||||
} | } | ||||
else | else | ||||
gen_vector_table(s, sel_vector_table); | gen_vector_table(s, sel_vector_table); | ||||
@@ -354,7 +351,7 @@ static int truemotion1_decode_init(AVCodecContext *avctx) | |||||
#define GET_NEXT_INDEX() \ | #define GET_NEXT_INDEX() \ | ||||
{\ | {\ | ||||
if (index_stream_index >= s->index_stream_size) { \ | if (index_stream_index >= s->index_stream_size) { \ | ||||
printf (" help! truemotion1 decoder went out of bounds\n"); \ | |||||
av_log(s->avctx, AV_LOG_INFO, " help! truemotion1 decoder went out of bounds\n"); \ | |||||
return; \ | return; \ | ||||
} \ | } \ | ||||
index = s->index_stream[index_stream_index++] * 4; \ | index = s->index_stream[index_stream_index++] * 4; \ | ||||
@@ -542,7 +539,7 @@ static int truemotion1_decode_frame(AVCodecContext *avctx, | |||||
s->frame.reference = 1; | s->frame.reference = 1; | ||||
if (avctx->get_buffer(avctx, &s->frame) < 0) { | if (avctx->get_buffer(avctx, &s->frame) < 0) { | ||||
fprintf(stderr, "truemotion1: get_buffer() failed\n"); | |||||
av_log(s->avctx, AV_LOG_ERROR, "truemotion1: get_buffer() failed\n"); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -561,7 +558,7 @@ static int truemotion1_decode_frame(AVCodecContext *avctx, | |||||
memcpy(s->frame.data[0], s->prev_frame.data[0], | memcpy(s->frame.data[0], s->prev_frame.data[0], | ||||
s->frame.linesize[0] * s->avctx->height); | s->frame.linesize[0] * s->avctx->height); | ||||
} else if (compression_types[s->compression].algorithm == ALGO_RGB24H) { | } else if (compression_types[s->compression].algorithm == ALGO_RGB24H) { | ||||
printf (" 24-bit Duck TrueMotion decoding not yet implemented\n"); | |||||
av_log(s->avctx, AV_LOG_ERROR, "24bit compression not yet supported\n"); | |||||
} else { | } else { | ||||
truemotion1_decode_16bit(s); | truemotion1_decode_16bit(s); | ||||
} | } | ||||
@@ -47,9 +47,6 @@ | |||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | #include "dsputil.h" | ||||
#define printf(...) {} //(f)printf() usage is forbidden in libavcodec, use av_log | |||||
#define fprintf(...) {} | |||||
#define VMD_HEADER_SIZE 0x330 | #define VMD_HEADER_SIZE 0x330 | ||||
#define PALETTE_COUNT 256 | #define PALETTE_COUNT 256 | ||||
@@ -245,7 +242,7 @@ static void vmd_decode(VmdVideoContext *s) | |||||
} | } | ||||
} while (ofs < frame_width); | } while (ofs < frame_width); | ||||
if (ofs > frame_width) { | if (ofs > frame_width) { | ||||
printf (" VMD video: offset > width (%d > %d)\n", | |||||
av_log(s->avctx, AV_LOG_ERROR, "VMD video: offset > width (%d > %d)\n", | |||||
ofs, frame_width); | ofs, frame_width); | ||||
break; | break; | ||||
} | } | ||||
@@ -283,7 +280,7 @@ static void vmd_decode(VmdVideoContext *s) | |||||
} | } | ||||
} while (ofs < frame_width); | } while (ofs < frame_width); | ||||
if (ofs > frame_width) { | if (ofs > frame_width) { | ||||
printf (" VMD video: offset > width (%d > %d)\n", | |||||
av_log(s->avctx, AV_LOG_ERROR, "VMD video: offset > width (%d > %d)\n", | |||||
ofs, frame_width); | ofs, frame_width); | ||||
} | } | ||||
dp += s->frame.linesize[0]; | dp += s->frame.linesize[0]; | ||||
@@ -311,7 +308,7 @@ static int vmdvideo_decode_init(AVCodecContext *avctx) | |||||
/* make sure the VMD header made it */ | /* make sure the VMD header made it */ | ||||
if (s->avctx->extradata_size != VMD_HEADER_SIZE) { | if (s->avctx->extradata_size != VMD_HEADER_SIZE) { | ||||
printf(" VMD video: expected extradata size of %d\n", | |||||
av_log(s->avctx, AV_LOG_ERROR, "VMD video: expected extradata size of %d\n", | |||||
VMD_HEADER_SIZE); | VMD_HEADER_SIZE); | ||||
return -1; | return -1; | ||||
} | } | ||||
@@ -350,7 +347,7 @@ static int vmdvideo_decode_frame(AVCodecContext *avctx, | |||||
s->frame.reference = 1; | s->frame.reference = 1; | ||||
if (avctx->get_buffer(avctx, &s->frame)) { | if (avctx->get_buffer(avctx, &s->frame)) { | ||||
printf (" VMD Video: get_buffer() failed\n"); | |||||
av_log(s->avctx, AV_LOG_ERROR, "VMD Video: get_buffer() failed\n"); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -389,6 +386,7 @@ static int vmdvideo_decode_end(AVCodecContext *avctx) | |||||
*/ | */ | ||||
typedef struct VmdAudioContext { | typedef struct VmdAudioContext { | ||||
AVCodecContext *avctx; | |||||
int channels; | int channels; | ||||
int bits; | int bits; | ||||
int block_align; | int block_align; | ||||
@@ -403,12 +401,13 @@ static int vmdaudio_decode_init(AVCodecContext *avctx) | |||||
VmdAudioContext *s = (VmdAudioContext *)avctx->priv_data; | VmdAudioContext *s = (VmdAudioContext *)avctx->priv_data; | ||||
int i; | int i; | ||||
s->avctx = avctx; | |||||
s->channels = avctx->channels; | s->channels = avctx->channels; | ||||
s->bits = avctx->bits_per_sample; | s->bits = avctx->bits_per_sample; | ||||
s->block_align = avctx->block_align; | s->block_align = avctx->block_align; | ||||
printf (" %d channels, %d bits/sample, block align = %d, sample rate = %d\n", | |||||
s->channels, s->bits, s->block_align, avctx->sample_rate); | |||||
av_log(s->avctx, AV_LOG_DEBUG, "%d channels, %d bits/sample, block align = %d, sample rate = %d\n", | |||||
s->channels, s->bits, s->block_align, avctx->sample_rate); | |||||
/* set up the steps8 and steps16 tables */ | /* set up the steps8 and steps16 tables */ | ||||
for (i = 0; i < 8; i++) { | for (i = 0; i < 8; i++) { | ||||
@@ -465,8 +464,8 @@ static int vmdaudio_loadsound(VmdAudioContext *s, unsigned char *data, | |||||
int bytes_decoded = 0; | int bytes_decoded = 0; | ||||
int i; | int i; | ||||
if (silence) | |||||
printf (" silent block!\n"); | |||||
if (silence) | |||||
av_log(s->avctx, AV_LOG_INFO, "silent block!\n"); | |||||
if (s->channels == 2) { | if (s->channels == 2) { | ||||
/* stereo handling */ | /* stereo handling */ | ||||
@@ -520,7 +519,6 @@ static int vmdaudio_decode_frame(AVCodecContext *avctx, | |||||
unsigned char *p = buf + 16; | unsigned char *p = buf + 16; | ||||
unsigned char *p_end = buf + buf_size; | unsigned char *p_end = buf + buf_size; | ||||
printf (" processing audio frame with %d bytes\n", buf_size); | |||||
if (buf_size < 16) | if (buf_size < 16) | ||||
return buf_size; | return buf_size; | ||||
@@ -529,7 +527,6 @@ printf (" processing audio frame with %d bytes\n", buf_size); | |||||
/* the chunk contains audio */ | /* the chunk contains audio */ | ||||
*data_size = vmdaudio_loadsound(s, output_samples, p, 0); | *data_size = vmdaudio_loadsound(s, output_samples, p, 0); | ||||
} else if (buf[6] == 2) { | } else if (buf[6] == 2) { | ||||
printf (" hey! audio case #2\n"); | |||||
/* the chunk contains audio and silence mixed together */ | /* the chunk contains audio and silence mixed together */ | ||||
sound_flags = LE_32(p); | sound_flags = LE_32(p); | ||||
p += 4; | p += 4; | ||||
@@ -549,13 +546,10 @@ printf (" hey! audio case #2\n"); | |||||
sound_flags >>= 1; | sound_flags >>= 1; | ||||
} | } | ||||
} else if (buf[6] == 3) { | } else if (buf[6] == 3) { | ||||
printf (" hey! audio case #3\n"); | |||||
/* silent chunk */ | /* silent chunk */ | ||||
*data_size = vmdaudio_loadsound(s, output_samples, p, 1); | *data_size = vmdaudio_loadsound(s, output_samples, p, 1); | ||||
} | } | ||||
printf (" final sample count = %d, byte count = %d\n", (*data_size) / 2, | |||||
*data_size); | |||||
return buf_size; | return buf_size; | ||||
} | } | ||||