fix nsvdec.c compilation if DEBUG defined

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This commit is contained in:
Maksym Veremeyenko 2011-02-15 13:51:45 +02:00 committed by Ronald S. Bultje
parent ead15f1dc1
commit d06497f316
1 changed files with 48 additions and 63 deletions

View File

@ -81,12 +81,6 @@
* - seek
*/
#ifdef DEBUG
#define PRINT(_v) printf _v
#else
#define PRINT(_v)
#endif
#if 0
struct NSVf_header {
uint32_t chunk_tag; /* 'NSVf' */
@ -216,16 +210,12 @@ static const AVCodecTag nsv_codec_audio_tags[] = {
//static int nsv_load_index(AVFormatContext *s);
static int nsv_read_chunk(AVFormatContext *s, int fill_header);
#ifdef DEBUG
static void print_tag(const char *str, unsigned int tag, int size)
{
printf("%s: tag=%c%c%c%c\n",
str, tag & 0xff,
(tag >> 8) & 0xff,
(tag >> 16) & 0xff,
(tag >> 24) & 0xff);
}
#endif
#define print_tag(str, tag, size) \
av_dlog(NULL, "%s: tag=%c%c%c%c\n", \
str, tag & 0xff, \
(tag >> 8) & 0xff, \
(tag >> 16) & 0xff, \
(tag >> 24) & 0xff);
/* try to find something we recognize, and set the state accordingly */
static int nsv_resync(AVFormatContext *s)
@ -235,43 +225,41 @@ static int nsv_resync(AVFormatContext *s)
uint32_t v = 0;
int i;
PRINT(("%s(), offset = %"PRId64", state = %d\n", __FUNCTION__, url_ftell(pb), nsv->state));
av_dlog(s, "%s(), offset = %"PRId64", state = %d\n", __FUNCTION__, url_ftell(pb), nsv->state);
//nsv->state = NSV_UNSYNC;
for (i = 0; i < NSV_MAX_RESYNC; i++) {
if (url_feof(pb)) {
PRINT(("NSV EOF\n"));
av_dlog(s, "NSV EOF\n");
nsv->state = NSV_UNSYNC;
return -1;
}
v <<= 8;
v |= get_byte(pb);
/*
if (i < 8) {
PRINT(("NSV resync: [%d] = %02x\n", i, v & 0x0FF));
av_dlog(s, "NSV resync: [%d] = %02x\n", i, v & 0x0FF);
}
*/
if ((v & 0x0000ffff) == 0xefbe) { /* BEEF */
PRINT(("NSV resynced on BEEF after %d bytes\n", i+1));
av_dlog(s, "NSV resynced on BEEF after %d bytes\n", i+1);
nsv->state = NSV_FOUND_BEEF;
return 0;
}
/* we read as big endian, thus the MK*BE* */
if (v == TB_NSVF) { /* NSVf */
PRINT(("NSV resynced on NSVf after %d bytes\n", i+1));
av_dlog(s, "NSV resynced on NSVf after %d bytes\n", i+1);
nsv->state = NSV_FOUND_NSVF;
return 0;
}
if (v == MKBETAG('N', 'S', 'V', 's')) { /* NSVs */
PRINT(("NSV resynced on NSVs after %d bytes\n", i+1));
av_dlog(s, "NSV resynced on NSVs after %d bytes\n", i+1);
nsv->state = NSV_FOUND_NSVS;
return 0;
}
}
PRINT(("NSV sync lost\n"));
av_dlog(s, "NSV sync lost\n");
return -1;
}
@ -285,7 +273,7 @@ static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap)
int table_entries;
int table_entries_used;
PRINT(("%s()\n", __FUNCTION__));
av_dlog(s, "%s()\n", __FUNCTION__);
nsv->state = NSV_UNSYNC; /* in case we fail */
@ -296,22 +284,22 @@ static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap)
//s->file_size = (uint32_t)get_le32(pb);
file_size = (uint32_t)get_le32(pb);
PRINT(("NSV NSVf chunk_size %u\n", size));
PRINT(("NSV NSVf file_size %u\n", file_size));
av_dlog(s, "NSV NSVf chunk_size %u\n", size);
av_dlog(s, "NSV NSVf file_size %u\n", file_size);
nsv->duration = duration = get_le32(pb); /* in ms */
PRINT(("NSV NSVf duration %"PRId64" ms\n", duration));
av_dlog(s, "NSV NSVf duration %"PRId64" ms\n", duration);
// XXX: store it in AVStreams
strings_size = get_le32(pb);
table_entries = get_le32(pb);
table_entries_used = get_le32(pb);
PRINT(("NSV NSVf info-strings size: %d, table entries: %d, bis %d\n",
strings_size, table_entries, table_entries_used));
av_dlog(s, "NSV NSVf info-strings size: %d, table entries: %d, bis %d\n",
strings_size, table_entries, table_entries_used);
if (url_feof(pb))
return -1;
PRINT(("NSV got header; filepos %"PRId64"\n", url_ftell(pb)));
av_dlog(s, "NSV got header; filepos %"PRId64"\n", url_ftell(pb));
if (strings_size > 0) {
char *strings; /* last byte will be '\0' to play safe with str*() */
@ -338,7 +326,7 @@ static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap)
if (!p || p >= endp)
break;
*p++ = '\0';
PRINT(("NSV NSVf INFO: %s='%s'\n", token, value));
av_dlog(s, "NSV NSVf INFO: %s='%s'\n", token, value);
av_metadata_set2(&s->metadata, token, value, 0);
}
av_free(strings);
@ -346,7 +334,7 @@ static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap)
if (url_feof(pb))
return -1;
PRINT(("NSV got infos; filepos %"PRId64"\n", url_ftell(pb)));
av_dlog(s, "NSV got infos; filepos %"PRId64"\n", url_ftell(pb));
if (table_entries_used > 0) {
int i;
@ -367,22 +355,22 @@ static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap)
}
}
PRINT(("NSV got index; filepos %"PRId64"\n", url_ftell(pb)));
av_dlog(s, "NSV got index; filepos %"PRId64"\n", url_ftell(pb));
#ifdef DEBUG_DUMP_INDEX
#define V(v) ((v<0x20 || v > 127)?'.':v)
/* dump index */
PRINT(("NSV %d INDEX ENTRIES:\n", table_entries));
PRINT(("NSV [dataoffset][fileoffset]\n", table_entries));
av_dlog(s, "NSV %d INDEX ENTRIES:\n", table_entries);
av_dlog(s, "NSV [dataoffset][fileoffset]\n", table_entries);
for (i = 0; i < table_entries; i++) {
unsigned char b[8];
url_fseek(pb, size + nsv->nsvs_file_offset[i], SEEK_SET);
get_buffer(pb, b, 8);
PRINT(("NSV [0x%08lx][0x%08lx]: %02x %02x %02x %02x %02x %02x %02x %02x"
av_dlog(s, "NSV [0x%08lx][0x%08lx]: %02x %02x %02x %02x %02x %02x %02x %02x"
"%c%c%c%c%c%c%c%c\n",
nsv->nsvs_file_offset[i], size + nsv->nsvs_file_offset[i],
b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7],
V(b[0]), V(b[1]), V(b[2]), V(b[3]), V(b[4]), V(b[5]), V(b[6]), V(b[7]) ));
V(b[0]), V(b[1]), V(b[2]), V(b[3]), V(b[4]), V(b[5]), V(b[6]), V(b[7]) );
}
//url_fseek(pb, size, SEEK_SET); /* go back to end of header */
#undef V
@ -406,7 +394,7 @@ static int nsv_parse_NSVs_header(AVFormatContext *s, AVFormatParameters *ap)
int i;
AVStream *st;
NSVStream *nst;
PRINT(("%s()\n", __FUNCTION__));
av_dlog(s, "%s()\n", __FUNCTION__);
vtag = get_le32(pb);
atag = get_le32(pb);
@ -414,7 +402,7 @@ static int nsv_parse_NSVs_header(AVFormatContext *s, AVFormatParameters *ap)
vheight = get_le16(pb);
i = get_byte(pb);
PRINT(("NSV NSVs framerate code %2x\n", i));
av_dlog(s, "NSV NSVs framerate code %2x\n", i);
if(i&0x80) { /* odd way of giving native framerates from docs */
int t=(i & 0x7F)>>2;
if(t<16) framerate = (AVRational){1, t+1};
@ -434,11 +422,10 @@ static int nsv_parse_NSVs_header(AVFormatContext *s, AVFormatParameters *ap)
nsv->avsync = get_le16(pb);
nsv->framerate = framerate;
#ifdef DEBUG
print_tag("NSV NSVs vtag", vtag, 0);
print_tag("NSV NSVs atag", atag, 0);
PRINT(("NSV NSVs vsize %dx%d\n", vwidth, vheight));
#endif
av_dlog(s, "NSV NSVs vsize %dx%d\n", vwidth, vheight);
/* XXX change to ap != NULL ? */
if (s->nb_streams == 0) { /* streams not yet published, let's do that */
@ -502,7 +489,7 @@ static int nsv_parse_NSVs_header(AVFormatContext *s, AVFormatParameters *ap)
#ifdef CHECK_SUBSEQUENT_NSVS
} else {
if (nsv->vtag != vtag || nsv->atag != atag || nsv->vwidth != vwidth || nsv->vheight != vwidth) {
PRINT(("NSV NSVs header values differ from the first one!!!\n"));
av_dlog(s, "NSV NSVs header values differ from the first one!!!\n");
//return -1;
}
#endif /* CHECK_SUBSEQUENT_NSVS */
@ -521,8 +508,8 @@ static int nsv_read_header(AVFormatContext *s, AVFormatParameters *ap)
NSVContext *nsv = s->priv_data;
int i, err;
PRINT(("%s()\n", __FUNCTION__));
PRINT(("filename '%s'\n", s->filename));
av_dlog(s, "%s()\n", __FUNCTION__);
av_dlog(s, "filename '%s'\n", s->filename);
nsv->state = NSV_UNSYNC;
nsv->ahead[0].data = nsv->ahead[1].data = NULL;
@ -543,7 +530,7 @@ static int nsv_read_header(AVFormatContext *s, AVFormatParameters *ap)
/* now read the first chunk, so we can attempt to decode more info */
err = nsv_read_chunk(s, 1);
PRINT(("parsed header\n"));
av_dlog(s, "parsed header\n");
return 0;
}
@ -561,7 +548,7 @@ static int nsv_read_chunk(AVFormatContext *s, int fill_header)
uint16_t auxsize;
uint32_t auxtag;
PRINT(("%s(%d)\n", __FUNCTION__, fill_header));
av_dlog(s, "%s(%d)\n", __FUNCTION__, fill_header);
if (nsv->ahead[0].data || nsv->ahead[1].data)
return 0; //-1; /* hey! eat what you've in your plate first! */
@ -586,17 +573,17 @@ null_chunk_retry:
asize = get_le16(pb);
vsize = (vsize << 4) | (auxcount >> 4);
auxcount &= 0x0f;
PRINT(("NSV CHUNK %d aux, %u bytes video, %d bytes audio\n", auxcount, vsize, asize));
av_dlog(s, "NSV CHUNK %d aux, %u bytes video, %d bytes audio\n", auxcount, vsize, asize);
/* skip aux stuff */
for (i = 0; i < auxcount; i++) {
auxsize = get_le16(pb);
auxtag = get_le32(pb);
PRINT(("NSV aux data: '%c%c%c%c', %d bytes\n",
av_dlog(s, "NSV aux data: '%c%c%c%c', %d bytes\n",
(auxtag & 0x0ff),
((auxtag >> 8) & 0x0ff),
((auxtag >> 16) & 0x0ff),
((auxtag >> 24) & 0x0ff),
auxsize));
auxsize);
url_fskip(pb, auxsize);
vsize -= auxsize + sizeof(uint16_t) + sizeof(uint32_t); /* that's becoming braindead */
}
@ -621,10 +608,8 @@ null_chunk_retry:
pkt->stream_index = st[NSV_ST_VIDEO]->index;//NSV_ST_VIDEO;
pkt->dts = nst->frame_offset;
pkt->flags |= nsv->state == NSV_HAS_READ_NSVS ? AV_PKT_FLAG_KEY : 0; /* keyframe only likely on a sync frame */
/*
for (i = 0; i < MIN(8, vsize); i++)
PRINT(("NSV video: [%d] = %02x\n", i, pkt->data[i]));
*/
for (i = 0; i < FFMIN(8, vsize); i++)
av_dlog(s, "NSV video: [%d] = %02x\n", i, pkt->data[i]);
}
if(st[NSV_ST_VIDEO])
((NSVStream*)st[NSV_ST_VIDEO]->priv_data)->frame_offset++;
@ -642,11 +627,11 @@ null_chunk_retry:
channels = get_byte(pb);
samplerate = get_le16(pb);
asize-=4;
PRINT(("NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate));
av_dlog(s, "NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate);
if (fill_header) {
st[NSV_ST_AUDIO]->need_parsing = AVSTREAM_PARSE_NONE; /* we know everything */
if (bps != 16) {
PRINT(("NSV AUDIO bit/sample != 16 (%d)!!!\n", bps));
av_dlog(s, "NSV AUDIO bit/sample != 16 (%d)!!!\n", bps);
}
bps /= channels; // ???
if (bps == 8)
@ -655,7 +640,7 @@ null_chunk_retry:
channels = 1;
st[NSV_ST_AUDIO]->codec->channels = channels;
st[NSV_ST_AUDIO]->codec->sample_rate = samplerate;
PRINT(("NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate));
av_dlog(s, "NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate);
}
}
av_get_packet(pb, pkt, asize);
@ -666,7 +651,7 @@ null_chunk_retry:
pkt->dts = (((NSVStream*)st[NSV_ST_VIDEO]->priv_data)->frame_offset-1);
pkt->dts *= (int64_t)1000 * nsv->framerate.den;
pkt->dts += (int64_t)nsv->avsync * nsv->framerate.num;
PRINT(("NSV AUDIO: sync:%d, dts:%"PRId64, nsv->avsync, pkt->dts));
av_dlog(s, "NSV AUDIO: sync:%d, dts:%"PRId64, nsv->avsync, pkt->dts);
}
nst->frame_offset++;
}
@ -681,7 +666,7 @@ static int nsv_read_packet(AVFormatContext *s, AVPacket *pkt)
NSVContext *nsv = s->priv_data;
int i, err = 0;
PRINT(("%s()\n", __FUNCTION__));
av_dlog(s, "%s()\n", __FUNCTION__);
/* in case we don't already have something to eat ... */
if (nsv->ahead[0].data == NULL && nsv->ahead[1].data == NULL)
@ -692,7 +677,7 @@ static int nsv_read_packet(AVFormatContext *s, AVPacket *pkt)
/* now pick one of the plates */
for (i = 0; i < 2; i++) {
if (nsv->ahead[i].data) {
PRINT(("%s: using cached packet[%d]\n", __FUNCTION__, i));
av_dlog(s, "%s: using cached packet[%d]\n", __FUNCTION__, i);
/* avoid the cost of new_packet + memcpy(->data) */
memcpy(pkt, &nsv->ahead[i], sizeof(AVPacket));
nsv->ahead[i].data = NULL; /* we ate that one */
@ -752,7 +737,7 @@ static int nsv_read_close(AVFormatContext *s)
static int nsv_probe(AVProbeData *p)
{
int i;
// PRINT(("nsv_probe(), buf_size %d\n", p->buf_size));
av_dlog(s, "nsv_probe(), buf_size %d\n", p->buf_size);
/* check file header */
/* streamed files might not have any header */
if (p->buf[0] == 'N' && p->buf[1] == 'S' &&