34 #define NSV_MAX_RESYNC (500*1024) 
   35 #define NSV_MAX_RESYNC_TRIES 300 
   90     uint32_t info_strings_size;  
 
   91     uint32_t table_entries;
 
   92     uint32_t table_entries_used; 
 
  105 struct nsv_avchunk_header {
 
  107     uint16_t vchunk_size_msb; 
 
  108     uint16_t achunk_size;
 
  111 struct nsv_pcm_header {
 
  126 #define T_NSVF MKTAG('N', 'S', 'V', 'f')  
  127 #define T_NSVS MKTAG('N', 'S', 'V', 's')  
  128 #define T_TOC2 MKTAG('T', 'O', 'C', '2')  
  129 #define T_NONE MKTAG('N', 'O', 'N', 'E')  
  130 #define T_SUBT MKTAG('S', 'U', 'B', 'T')  
  131 #define T_ASYN MKTAG('A', 'S', 'Y', 'N')  
  132 #define T_KEYF MKTAG('K', 'E', 'Y', 'F')  
  134 #define TB_NSVF MKBETAG('N', 'S', 'V', 'f') 
  135 #define TB_NSVS MKBETAG('N', 'S', 'V', 's') 
  138 #define NSV_ST_VIDEO 0 
  139 #define NSV_ST_AUDIO 1 
  140 #define NSV_ST_SUBT 2 
  234         if ((v & 0x0000ffff) == 0xefbe) { 
 
  245         if (v == 
MKBETAG(
'N', 
'S', 
'V', 
's')) { 
 
  265     int table_entries_used;
 
  285     av_log(s, 
AV_LOG_TRACE, 
"NSV NSVf info-strings size: %d, table entries: %d, bis %d\n",
 
  286             strings_size, table_entries, table_entries_used);
 
  292     if (strings_size > 0) {
 
  298         p = strings = 
av_mallocz((
size_t)strings_size + 1);
 
  301         endp = strings + strings_size;
 
  310             if (!p || p >= endp-2)
 
  315             p = strchr(p, quote);
 
  329     if (table_entries_used > 0) {
 
  332         if((
unsigned)table_entries_used >= UINT_MAX / 
sizeof(uint32_t))
 
  338         for(i=0;i<table_entries_used;i++) {
 
  344         if(table_entries > table_entries_used &&
 
  349             for(i=0;i<table_entries_used;i++) {
 
  370     uint16_t vwidth, vheight;
 
  389             framerate.
num *= 1000;
 
  390             framerate.
den *= 1001;
 
  393         if((i&3)==3)      framerate.
num *= 24;
 
  394         else if((i&3)==2) framerate.
num *= 25;
 
  395         else              framerate.
num *= 30;
 
  547     vsize = (vsize << 4) | (auxcount >> 4);
 
  549     av_log(s, 
AV_LOG_TRACE, 
"NSV CHUNK %d aux, %"PRIu32
" bytes video, %d bytes audio\n", auxcount, vsize, asize);
 
  551     for (i = 0; i < auxcount; i++) {
 
  556         vsize -= auxsize + 
sizeof(uint16_t) + 
sizeof(uint32_t); 
 
  561     if (!vsize && !asize) {
 
  563         goto null_chunk_retry;
 
  580         for (i = 0; i < 
FFMIN(8, vsize); i++)
 
  584         ((
NSVStream*)st[NSV_ST_VIDEO]->priv_data)->frame_offset++;
 
  591         if (asize && st[NSV_ST_AUDIO]->codecpar->codec_tag == 
MKTAG(
'P', 
'C', 
'M', 
' ')) {
 
  598             if (!channels || !samplerate)
 
  601             av_log(s, 
AV_LOG_TRACE, 
"NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate);
 
  614                 av_log(s, 
AV_LOG_TRACE, 
"NSV RAWAUDIO: bps %d, nchan %d, srate %d\n", bps, channels, samplerate);
 
  623             pkt->
dts = (((
NSVStream*)st[NSV_ST_VIDEO]->priv_data)->frame_offset-1);
 
  648     for (i = 0; i < 2; i++) {
 
  699     if (p->
buf[0] == 
'N' && p->
buf[1] == 
'S' &&
 
  700         p->
buf[2] == 
'V' && (p->
buf[3] == 
'f' || p->
buf[3] == 
's'))
 
  706     for (i = 1; i < p->
buf_size - 3; i++) {
 
  711             int offset = i + 23 + asize + vsize + 1;
 
  712             if (offset <= p->buf_size - 2 && 
AV_RL16(p->
buf + offset) == 0xBEEF)
 
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
 
int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags)
Add an index entry into a sorted list. 
 
static const AVCodecTag nsv_codec_video_tags[]
 
static int nsv_parse_NSVf_header(AVFormatContext *s)
 
uint32_t * nsvs_file_offset
 
uint32_t * nsvs_timestamps
 
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
 
enum AVCodecID codec_id
Specific type of the encoded data (the codec used). 
 
int index
stream index in AVFormatContext 
 
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext. 
 
AVIndexEntry * index_entries
Only used if the format does not support seeking natively. 
 
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward. 
 
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
 
static const AVCodecTag nsv_codec_audio_tags[]
 
Macro definitions for various function/variable attributes. 
 
#define NSV_MAX_RESYNC_TRIES
 
#define AV_LOG_TRACE
Extremely verbose debugging, useful for libav* development. 
 
enum AVStreamParseType need_parsing
 
int id
Format-specific stream ID. 
 
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file. 
 
AVStream ** streams
A list of all streams in the file. 
 
static av_cold int read_close(AVFormatContext *ctx)
 
static int nsv_resync(AVFormatContext *s)
 
int av_match_ext(const char *filename, const char *extensions)
Return a positive value if the given filename has one of the given extensions, 0 otherwise. 
 
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext. 
 
static int nsv_read_close(AVFormatContext *s)
 
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf. 
 
#define AV_PKT_FLAG_KEY
The packet contains a keyframe. 
 
static int nsv_read_packet(AVFormatContext *s, AVPacket *pkt)
 
AVDictionary * metadata
Metadata that applies to the whole file. 
 
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags)
Get the index for a specific timestamp. 
 
unsigned int avio_rl32(AVIOContext *s)
 
int64_t timestamp
Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are...
 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
 
preferred ID for decoding MPEG audio layer 1, 2 or 3 
 
enum AVMediaType codec_type
General type of the encoded data. 
 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_RL24
 
static const uint8_t offset[127][2]
 
static int nsv_read_chunk(AVFormatContext *s, int fill_header)
 
int flags
A combination of AV_PKT_FLAG values. 
 
int avio_r8(AVIOContext *s)
 
int buf_size
Size of buf except extra allocated bytes. 
 
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. 
 
unsigned int nb_streams
Number of elements in AVFormatContext.streams. 
 
AVInputFormat ff_nsv_demuxer
 
static int nsv_parse_NSVs_header(AVFormatContext *s)
 
int64_t av_rescale(int64_t a, int64_t b, int64_t c)
Rescale a 64-bit integer with rounding to nearest. 
 
static int nsv_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
 
GLsizei GLboolean const GLfloat * value
 
static int nsv_probe(AVProbeData *p)
 
static int read_header(FFV1Context *f)
 
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
 
AVIOContext * pb
I/O context. 
 
void av_packet_unref(AVPacket *pkt)
Wipe the packet. 
 
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry. 
 
Rational number (pair of numerator and denominator). 
 
This structure contains the data a format has to probe a file. 
 
static int nsv_read_header(AVFormatContext *s)
 
int64_t duration
Decoding: duration of the stream, in stream time base. 
 
int sample_rate
Audio only. 
 
unsigned int avio_rl16(AVIOContext *s)
 
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base...
 
#define MKBETAG(a, b, c, d)
 
void * priv_data
Format private data. 
 
int bits_per_coded_sample
The number of bits per sample in the codedwords. 
 
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed...
 
AVCodecParameters * codecpar
Codec parameters associated with this stream. 
 
#define av_malloc_array(a, b)
 
int avio_feof(AVIOContext *s)
feof() equivalent for AVIOContext. 
 
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC). 
 
#define MKTAG(a, b, c, d)
 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
 
This structure stores compressed data.