int type;
int sequence;
int length;
+ int duration;
uint8_t text[1024 + 1];
} VivoContext;
if (c & 0x80 || length > 1024 || length < 21)
return 0;
- if (memcmp(buf, "\r\nVersion:Vivo/", 15))
+ buf += 2;
+ if (memcmp(buf, "Version:Vivo/", 13))
return 0;
- buf += 15;
+ buf += 13;
if (*buf < '0' || *buf > '2')
return 0;
ast->codecpar->bits_per_coded_sample = 8;
ast->codecpar->block_align = 24;
ast->codecpar->bit_rate = 6400;
+ } else {
+ ast->codecpar->codec_id = AV_CODEC_ID_SIREN;
+ ast->codecpar->bits_per_coded_sample = 16;
+ ast->codecpar->block_align = 40;
+ ast->codecpar->bit_rate = 6400;
+ vivo->duration = 320;
}
ast->start_time = 0;
VivoContext *vivo = s->priv_data;
AVIOContext *pb = s->pb;
unsigned old_sequence = vivo->sequence, old_type = vivo->type;
- int stream_index, ret = 0;
+ int stream_index, duration, ret = 0;
restart:
case 1:
case 2: // video
stream_index = 0;
+ duration = 1;
break;
case 3:
case 4: // audio
stream_index = 1;
+ duration = vivo->duration;
break;
default:
av_log(s, AV_LOG_ERROR, "unknown packet type %d\n", vivo->type);
}
pkt->stream_index = stream_index;
+ pkt->duration = duration;
return ret;
}