• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/iserver/libav-0.8.8/libavformat/

Lines Matching refs:nut

2  * nut muxer
27 #include "nut.h"
93 NUTContext *nut = s->priv_data;
100 for(i=1; i<nut->header_count; i++){
101 if( len == nut->header_len[i]
102 && !memcmp(out, nut->header[i], len)){
112 NUTContext *nut = s->priv_data;
125 nut->header_count= 7;
126 for(i=1; i<nut->header_count; i++){
127 nut->header_len[i]= headers[i-1][0];
128 nut->header [i]= &headers[i-1][1];
133 NUTContext *nut = s->priv_data;
141 ft= &nut->frame_code[start];
149 FrameCode *ft= &nut->frame_code[start];
168 FrameCode *ft= &nut->frame_code[start2];
185 FrameCode *ft= &nut->frame_code[start2];
196 FrameCode *ft= &nut->frame_code[start2];
226 FrameCode *ft= &nut->frame_code[index];
239 memmove(&nut->frame_code['N'+1], &nut->frame_code['N'], sizeof(FrameCode)*(255-'N'));
240 nut->frame_code[ 0].flags=
241 nut->frame_code[255].flags=
242 nut->frame_code['N'].flags= FLAG_INVALID;
245 static void put_tt(NUTContext *nut, AVRational *time_base, AVIOContext *bc, uint64_t val){
246 val *= nut->time_base_count;
247 val += time_base - nut->time_base;
282 static void put_packet(NUTContext *nut, AVIOContext *bc, AVIOContext *dyn_bc, int calculate_checksum, uint64_t startcode){
303 static void write_mainheader(NUTContext *nut, AVIOContext *bc){
308 ff_put_v(bc, nut->avf->nb_streams);
309 ff_put_v(bc, nut->max_distance);
310 ff_put_v(bc, nut->time_base_count);
312 for(i=0; i<nut->time_base_count; i++){
313 ff_put_v(bc, nut->time_base[i].num);
314 ff_put_v(bc, nut->time_base[i].den);
326 if(tmp_pts != nut->frame_code[i].pts_delta) tmp_fields=1;
327 if(tmp_mul != nut->frame_code[i].size_mul ) tmp_fields=2;
328 if(tmp_stream != nut->frame_code[i].stream_id) tmp_fields=3;
329 if(tmp_size != nut->frame_code[i].size_lsb ) tmp_fields=4;
330 // if(tmp_res != nut->frame_code[i].res ) tmp_fields=5;
331 if(tmp_head_idx!=nut->frame_code[i].header_idx)tmp_fields=8;
333 tmp_pts = nut->frame_code[i].pts_delta;
334 tmp_flags = nut->frame_code[i].flags;
335 tmp_stream= nut->frame_code[i].stream_id;
336 tmp_mul = nut->frame_code[i].size_mul;
337 tmp_size = nut->frame_code[i].size_lsb;
338 // tmp_res = nut->frame_code[i].res;
339 tmp_head_idx= nut->frame_code[i].header_idx;
346 if(nut->frame_code[i].pts_delta != tmp_pts ) break;
347 if(nut->frame_code[i].flags != tmp_flags ) break;
348 if(nut->frame_code[i].stream_id != tmp_stream) break;
349 if(nut->frame_code[i].size_mul != tmp_mul ) break;
350 if(nut->frame_code[i].size_lsb != tmp_size+j) break;
351 // if(nut->frame_code[i].res != tmp_res ) break;
352 if(nut->frame_code[i].header_idx!= tmp_head_idx) break;
367 ff_put_v(bc, nut->header_count-1);
368 for(i=1; i<nut->header_count; i++){
369 ff_put_v(bc, nut->header_len[i]);
370 avio_write(bc, nut->header[i], nut->header_len[i]);
375 NUTContext *nut = avctx->priv_data;
392 ff_put_v(bc, nut->stream[i].time_base - nut->time_base);
393 ff_put_v(bc, nut->stream[i].msb_pts_shift);
394 ff_put_v(bc, nut->stream[i].max_pts_distance);
433 static int write_globalinfo(NUTContext *nut, AVIOContext *bc){
434 AVFormatContext *s= nut->avf;
459 static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id){
460 AVFormatContext *s= nut->avf;
490 static int write_chapter(NUTContext *nut, AVIOContext *bc, int id)
495 AVChapter *ch = nut->avf->chapters[id];
504 put_tt(nut, nut->chapter[id].time_base, bc, ch->start); // chapter_start
519 NUTContext *nut = avctx->priv_data;
528 write_mainheader(nut, dyn_bc);
529 put_packet(nut, bc, dyn_bc, 1, MAIN_STARTCODE);
531 for (i=0; i < nut->avf->nb_streams; i++){
535 if ((ret = write_streamheader(avctx, dyn_bc, nut->avf->streams[i], i)) < 0)
537 put_packet(nut, bc, dyn_bc, 1, STREAM_STARTCODE);
543 write_globalinfo(nut, dyn_bc);
544 put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE);
546 for (i = 0; i < nut->avf->nb_streams; i++) {
550 ret = write_streaminfo(nut, dyn_bc, i);
554 put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE);
562 for (i = 0; i < nut->avf->nb_chapters; i++) {
566 ret = write_chapter(nut, dyn_bc, i);
573 put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE);
576 nut->last_syncpoint_pos= INT_MIN;
577 nut->header_count++;
582 NUTContext *nut = s->priv_data;
586 nut->avf= s;
588 nut->stream = av_mallocz(sizeof(StreamContext)*s->nb_streams);
590 nut->chapter = av_mallocz(sizeof(ChapterContext)*s->nb_chapters);
591 nut->time_base= av_mallocz(sizeof(AVRational )*(s->nb_streams +
593 if (!nut->stream || (s->nb_chapters && !nut->chapter) || !nut->time_base) {
594 av_freep(&nut->stream);
595 av_freep(&nut->chapter);
596 av_freep(&nut->time_base);
608 for(j=0; j<nut->time_base_count; j++){
609 if(!memcmp(&time_base, &nut->time_base[j], sizeof(AVRational))){
613 nut->time_base[j]= time_base;
614 nut->stream[i].time_base= &nut->time_base[j];
615 if(j==nut->time_base_count)
616 nut->time_base_count++;
619 nut->stream[i].msb_pts_shift = 7;
621 nut->stream[i].msb_pts_shift = 14;
622 nut->stream[i].max_pts_distance= FFMAX(time_base.den, time_base.num) / time_base.num;
628 for (j = 0; j < nut->time_base_count; j++) {
629 if (!memcmp(&ch->time_base, &nut->time_base[j], sizeof(AVRational)))
633 nut->time_base[j] = ch->time_base;
634 nut->chapter[i].time_base = &nut->time_base[j];
635 if(j == nut->time_base_count)
636 nut->time_base_count++;
639 nut->max_distance = MAX_DISTANCE;
642 assert(nut->frame_code['N'].flags == FLAG_INVALID);
657 static int get_needed_flags(NUTContext *nut, StreamContext *nus, FrameCode *fc, AVPacket *pkt){
664 if(pkt->size > 2*nut->max_distance ) flags |= FLAG_CHECKSUM;
667 if( pkt->size < nut->header_len[fc->header_idx]
669 || memcmp(pkt->data, nut->header[fc->header_idx], nut->header_len[fc->header_idx]))
675 static int find_best_header_idx(NUTContext *nut, AVPacket *pkt){
683 for(i=1; i<nut->header_count; i++){
684 if( pkt->size >= nut->header_len[i]
685 && nut->header_len[i] > best_len
686 && !memcmp(pkt->data, nut->header[i], nut->header_len[i])){
688 best_len= nut->header_len[i];
695 NUTContext *nut = s->priv_data;
696 StreamContext *nus= &nut->stream[pkt->stream_index];
708 if(1LL<<(20+3*nut->header_count) <= avio_tell(bc))
714 if(pkt->size + 30/*FIXME check*/ + avio_tell(bc) >= nut->last_syncpoint_pos + nut->max_distance)
722 ff_nut_reset_ts(nut, *nus->time_base, pkt->dts);
726 nus->time_base->num * (int64_t)nut->stream[i].time_base->den,
727 nus->time_base->den * (int64_t)nut->stream[i].time_base->num,
734 sp= av_tree_find(nut->syncpoints, &dummy, (void *) ff_nut_sp_pos_cmp,
737 nut->last_syncpoint_pos= avio_tell(bc);
741 put_tt(nut, nus->time_base, dyn_bc, pkt->dts);
742 ff_put_v(dyn_bc, sp ? (nut->last_syncpoint_pos - sp->pos)>>4 : 0);
743 put_packet(nut, bc, dyn_bc, 1, SYNCPOINT_STARTCODE);
745 ff_nut_add_sp(nut, nut->last_syncpoint_pos, 0/*unused*/, pkt->dts);
753 best_header_idx= find_best_header_idx(nut, pkt);
759 FrameCode *fc= &nut->frame_code[i];
764 needed_flags= get_needed_flags(nut, nus, fc, pkt);
792 && nut->header_len[best_header_idx] > nut->header_len[fc->header_idx]+1){
797 length += 1 - nut->header_len[best_header_idx];
799 length -= nut->header_len[fc->header_idx];
812 fc= &nut->frame_code[frame_code];
814 needed_flags= get_needed_flags(nut, nus, fc, pkt);
831 avio_write(bc, pkt->data + nut->header_len[header_idx], pkt->size - nut->header_len[header_idx]);
839 nut->last_syncpoint_pos,
849 NUTContext *nut= s->priv_data;
852 while(nut->header_count<3)
855 ff_nut_free_sp(nut);
856 av_freep(&nut->stream);
857 av_freep(&nut->chapter);
858 av_freep(&nut->time_base);
864 .name = "nut",
866 .mime_type = "video/x-nut",
867 .extensions = "nut",