Lines Matching defs:nsv

39  * (1) http://www.multimedia.cx/nsv-format.txt
41 * (2) http://www.stud.ktu.lt/~vitslav/nsv/nsv-format.txt
42 * http://www.stud.ktu.lt/~vitslav/nsv/
46 * (S1) http://www.nullsoft.com/nsv/samples/
47 * http://www.nullsoft.com/nsv/samples/faster.nsv
55 * where the table begins according to (1). After checking faster.nsv,
62 * strings faster.nsv | grep NSVs | wc -l
66 * for f in *.nsv; do HTIME="$(od -t x4 "$f" | head -1 | sed 's/.* //')"; echo "'$f' $((0x$HTIME))s = $((0x$HTIME/1000/60)):$((0x$HTIME/1000%60))"; done
69 * nsvtrailer.nsv (S1) does not have any NSVf header, only NSVs chunks,
72 * index slice duration check (excepts nsvtrailer.nsv):
73 * for f in [^n]*.nsv; do DUR="$(ffmpeg -i "$f" 2>/dev/null | grep 'NSVf duration' | cut -d ' ' -f 4)"; IC="$(ffmpeg -i "$f" 2>/dev/null | grep 'INDEX ENTRIES' | cut -d ' ' -f 2)"; echo "duration $DUR, slite time $(($DUR/$IC))"; done
218 NSVContext *nsv = s->priv_data;
226 nsv->state = NSV_UNSYNC;
237 nsv->state = NSV_FOUND_BEEF;
243 nsv->state = NSV_FOUND_NSVF;
248 nsv->state = NSV_FOUND_NSVS;
259 NSVContext *nsv = s->priv_data;
268 nsv->state = NSV_UNSYNC; /* in case we fail */
270 if (nsv->nsvf) {
274 nsv->nsvf = 1;
279 nsv->NSVf_end = size;
285 nsv->duration = duration = avio_rl32(pb); /* in ms */
338 nsv->index_entries = table_entries_used;
341 nsv->nsvs_file_offset = av_malloc_array((unsigned)table_entries_used, sizeof(uint32_t));
342 if (!nsv->nsvs_file_offset)
348 nsv->nsvs_file_offset[i] = avio_rl32(pb) + size;
353 nsv->nsvs_timestamps = av_malloc_array((unsigned)table_entries_used, sizeof(uint32_t));
354 if (!nsv->nsvs_timestamps)
357 nsv->nsvs_timestamps[i] = avio_rl32(pb);
364 avio_seek(pb, nsv->base_offset + size, SEEK_SET); /* required for dumbdriving-271.nsv (2 extra bytes) */
368 nsv->state = NSV_HAS_READ_NSVF;
374 NSVContext *nsv = s->priv_data;
407 nsv->avsync = avio_rl16(pb);
408 nsv->framerate = framerate;
414 nsv->vtag = vtag;
415 nsv->atag = atag;
416 nsv->vwidth = vwidth;
417 nsv->vheight = vwidth;
438 st->duration = av_rescale(nsv->duration, framerate.num, 1000*framerate.den);
440 for(i=0;i<nsv->index_entries;i++) {
441 if(nsv->nsvs_timestamps) {
442 av_add_index_entry(st, nsv->nsvs_file_offset[i], nsv->nsvs_timestamps[i],
445 int64_t ts = av_rescale(i*nsv->duration/nsv->index_entries, framerate.num, 1000*framerate.den);
446 av_add_index_entry(st, nsv->nsvs_file_offset[i], ts, 0, 0, AVINDEX_KEYFRAME);
469 st->duration = (int64_t)nsv->duration * framerate.num;
472 if (nsv->vtag != vtag || nsv->atag != atag || nsv->vwidth != vwidth || nsv->vheight != vwidth) {
478 nsv->state = NSV_HAS_READ_NSVS;
482 nsv->state = NSV_UNSYNC;
488 NSVContext *nsv = s->priv_data;
491 nsv->state = NSV_UNSYNC;
492 nsv->ahead[0].data = nsv->ahead[1].data = NULL;
498 if (nsv->state == NSV_FOUND_NSVF) {
504 if (nsv->state == NSV_FOUND_NSVS) {
523 NSVContext *nsv = s->priv_data;
535 if (nsv->ahead[0].data || nsv->ahead[1].data)
542 for (i = 0; i < NSV_MAX_RESYNC_TRIES && nsv->state < NSV_FOUND_NSVS && !err; i++)
546 if (nsv->state == NSV_FOUND_NSVS)
550 if (nsv->state != NSV_HAS_READ_NSVS && nsv->state != NSV_FOUND_BEEF)
571 nsv->state = NSV_UNSYNC;
583 pkt = &nsv->ahead[NSV_ST_VIDEO];
588 pkt->flags |= nsv->state == NSV_HAS_READ_NSVS ? AV_PKT_FLAG_KEY : 0; /* keyframe only likely on a sync frame */
597 pkt = &nsv->ahead[NSV_ST_AUDIO];
629 pkt->flags |= nsv->state == NSV_HAS_READ_NSVS ? AV_PKT_FLAG_KEY : 0; /* keyframe only likely on a sync frame */
630 if( nsv->state == NSV_HAS_READ_NSVS && st[NSV_ST_VIDEO] ) {
633 pkt->dts *= (int64_t)1000 * nsv->framerate.den;
634 pkt->dts += (int64_t)nsv->avsync * nsv->framerate.num;
635 av_log(s, AV_LOG_TRACE, "NSV AUDIO: sync:%d, dts:%"PRId64, nsv->avsync, pkt->dts);
640 nsv->state = NSV_UNSYNC;
647 NSVContext *nsv = s->priv_data;
651 if (!nsv->ahead[0].data && !nsv->ahead[1].data)
658 if (nsv->ahead[i].data) {
659 av_packet_move_ref(pkt, &nsv->ahead[i]);
670 NSVContext *nsv = s->priv_data;
684 nsv->state = NSV_UNSYNC;
690 NSVContext *nsv = s->priv_data;
692 av_freep(&nsv->nsvs_file_offset);
693 av_freep(&nsv->nsvs_timestamps);
694 if (nsv->ahead[0].data)
695 av_packet_unref(&nsv->ahead[0]);
696 if (nsv->ahead[1].data)
697 av_packet_unref(&nsv->ahead[1]);
726 if (av_match_ext(p->filename, "nsv"))
733 .name = "nsv",