• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/minidlna/ffmpeg-2.3.4/libavformat/

Lines Matching refs:mov

98 static int supports_edts(MOVMuxContext *mov)
101 return (mov->use_editlist<0 && !(mov->flags & FF_MOV_FLAG_FRAGMENT)) || mov->use_editlist>0;
1047 av_log(s, AV_LOG_ERROR, "%s rawvideo cannot be written to mov, output file will be unreadable\n",
1777 static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov,
1789 if (mov->per_stream_grouping)
1958 static int mov_write_uuid_tag_psp(AVIOContext *pb, MOVTrack *mov)
1997 static int mov_write_trak_tag(AVIOContext *pb, MOVMuxContext *mov,
2003 mov_write_tkhd_tag(pb, mov, track, st);
2004 if (supports_edts(mov))
2027 static int mov_write_iods_tag(AVIOContext *pb, MOVMuxContext *mov)
2031 int audio_profile = mov->iods_audio_profile;
2032 int video_profile = mov->iods_video_profile;
2033 for (i = 0; i < mov->nb_streams; i++) {
2034 if (mov->tracks[i].entry > 0) {
2035 has_audio |= mov->tracks[i].enc->codec_type == AVMEDIA_TYPE_AUDIO;
2036 has_video |= mov->tracks[i].enc->codec_type == AVMEDIA_TYPE_VIDEO;
2069 static int mov_write_mvex_tag(AVIOContext *pb, MOVMuxContext *mov)
2075 for (i = 0; i < mov->nb_streams; i++)
2076 mov_write_trex_tag(pb, &mov->tracks[i]);
2080 static int mov_write_mvhd_tag(AVIOContext *pb, MOVMuxContext *mov)
2086 for (i = 0; i < mov->nb_streams; i++) {
2087 if (mov->tracks[i].entry > 0 && mov->tracks[i].timescale) {
2088 max_track_len_temp = av_rescale_rnd(mov->tracks[i].track_duration,
2090 mov->tracks[i].timescale,
2094 if (max_track_id < mov->tracks[i].track_id)
2095 max_track_id = mov->tracks[i].track_id;
2105 avio_wb64(pb, mov->time);
2106 avio_wb64(pb, mov->time);
2108 avio_wb32(pb, mov->time); /* creation time */
2109 avio_wb32(pb, mov->time); /* modification time */
2133 static int mov_write_itunes_hdlr_tag(AVIOContext *pb, MOVMuxContext *mov,
2226 static int mov_write_trkn_tag(AVIOContext *pb, MOVMuxContext *mov,
2281 static int mov_write_ilst_tag(AVIOContext *pb, MOVMuxContext *mov,
2293 if (!mov->exact &&
2312 mov_write_trkn_tag(pb, mov, s, 0); // track number
2313 mov_write_trkn_tag(pb, mov, s, 1); // disc number
2319 static int mov_write_meta_tag(AVIOContext *pb, MOVMuxContext *mov,
2327 mov_write_itunes_hdlr_tag(pb, mov, s);
2328 mov_write_ilst_tag(pb, mov, s);
2410 static int mov_write_udta_tag(AVIOContext *pb, MOVMuxContext *mov,
2421 if (mov->mode & MODE_3GP) {
2430 } else if (mov->mode == MODE_MOV) { // the title field breaks gtkpod with mp4 and my suspicion is that stuff is not valid in mp4
2437 // currently ignored by mov.c
2439 // add support for libquicktime, this atom is also actually read by mov.c
2445 mov_write_meta_tag(pb_buf, mov, s);
2476 MOVMuxContext *mov = s->priv_data;
2501 if (!mov->exact)
2536 static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov,
2544 for (i = 0; i < mov->nb_streams; i++) {
2545 if (mov->tracks[i].entry <= 0 && !(mov->flags & FF_MOV_FLAG_FRAGMENT))
2548 mov->tracks[i].time = mov->time;
2549 mov->tracks[i].track_id = i + 1;
2551 if (mov->tracks[i].entry)
2552 build_chunks(&mov->tracks[i]);
2555 if (mov->chapter_track)
2557 mov->tracks[i].tref_tag = MKTAG('c','h','a','p');
2558 mov->tracks[i].tref_id = mov->tracks[mov->chapter_track].track_id;
2560 for (i = 0; i < mov->nb_streams; i++) {
2561 if (mov->tracks[i].tag == MKTAG('r','t','p',' ')) {
2562 mov->tracks[i].tref_tag = MKTAG('h','i','n','t');
2563 mov->tracks[i].tref_id =
2564 mov->tracks[mov->tracks[i].src_track].track_id;
2567 for (i = 0; i < mov->nb_streams; i++) {
2568 if (mov->tracks[i].tag == MKTAG('t','m','c','d')) {
2569 int src_trk = mov->tracks[i].src_track;
2570 mov->tracks[src_trk].tref_tag = mov->tracks[i].tag;
2571 mov->tracks[src_trk].tref_id = mov->tracks[i].track_id;
2573 mov->tracks[i].track_duration = av_rescale(mov->tracks[src_trk].track_duration,
2574 mov->tracks[i].timescale,
2575 mov->tracks[src_trk].timescale);
2579 mov_write_mvhd_tag(pb, mov);
2580 if (mov->mode != MODE_MOV && !mov->iods_skip)
2581 mov_write_iods_tag(pb, mov);
2582 for (i = 0; i < mov->nb_streams; i++) {
2583 if (mov->tracks[i].entry > 0 || mov->flags & FF_MOV_FLAG_FRAGMENT) {
2584 mov_write_trak_tag(pb, mov, &(mov->tracks[i]), i < s->nb_streams ? s->streams[i] : NULL);
2587 if (mov->flags & FF_MOV_FLAG_FRAGMENT)
2588 mov_write_mvex_tag(pb, mov); /* QuickTime requires trak to precede this */
2590 if (mov->mode == MODE_PSP)
2593 mov_write_udta_tag(pb, mov, s);
2617 static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov)
2634 if (!mov->exact)
2640 for (i = 0; i < mov->nb_streams; i++) {
2641 MOVTrack *track = &mov->tracks[i];
2704 static int mov_write_mfhd_tag(AVIOContext *pb, MOVMuxContext *mov)
2709 avio_wb32(pb, mov->fragments);
2713 static int mov_write_tfhd_tag(AVIOContext *pb, MOVMuxContext *mov,
2724 if (mov->flags & FF_MOV_FLAG_OMIT_TFHD_OFFSET)
2770 static int mov_write_trun_tag(AVIOContext *pb, MOVMuxContext *mov,
2796 if (mov->flags & FF_MOV_FLAG_OMIT_TFHD_OFFSET &&
2797 !(mov->flags & FF_MOV_FLAG_SEPARATE_MOOF) &&
2840 static int mov_write_tfrf_tag(AVIOContext *pb, MOVMuxContext *mov,
2865 if (n < mov->ism_lookahead) {
2866 int free_size = 16 * (mov->ism_lookahead - n);
2875 static int mov_write_tfrf_tags(AVIOContext *pb, MOVMuxContext *mov,
2880 for (i = 0; i < mov->ism_lookahead; i++) {
2883 mov_write_tfrf_tag(pb, mov, track, track->nb_frag_info - 2 - i);
2889 static int mov_write_traf_tag(AVIOContext *pb, MOVMuxContext *mov,
2897 mov_write_tfhd_tag(pb, mov, track, moof_offset);
2898 mov_write_trun_tag(pb, mov, track, moof_size);
2899 if (mov->mode == MODE_ISM) {
2902 if (mov->ism_lookahead) {
2903 int i, size = 16 + 4 + 1 + 16 * mov->ism_lookahead;
2916 static int mov_write_moof_tag_internal(AVIOContext *pb, MOVMuxContext *mov,
2925 mov_write_mfhd_tag(pb, mov);
2926 for (i = 0; i < mov->nb_streams; i++) {
2927 MOVTrack *track = &mov->tracks[i];
2932 mov_write_traf_tag(pb, mov, track, pos, moof_size);
2938 static int mov_write_moof_tag(AVIOContext *pb, MOVMuxContext *mov, int tracks)
2945 mov_write_moof_tag_internal(avio_buf, mov, tracks, 0);
2947 return mov_write_moof_tag_internal(pb, mov, tracks, moof_size);
2974 static int mov_write_mfra_tag(AVIOContext *pb, MOVMuxContext *mov)
2983 if (mov->flags & FF_MOV_FLAG_ISML)
2986 for (i = 0; i < mov->nb_streams; i++) {
2987 MOVTrack *track = &mov->tracks[i];
3000 static int mov_write_mdat_tag(AVIOContext *pb, MOVMuxContext *mov)
3003 ffio_wfourcc(pb, mov->mode == MODE_MOV ? "wide" : "free");
3005 mov->mdat_pos = avio_tell(pb);
3014 MOVMuxContext *mov = s->priv_data;
3031 if (mov->major_brand && strlen(mov->major_brand) >= 4)
3032 ffio_wfourcc(pb, mov->major_brand);
3033 else if (mov->mode == MODE_3GP) {
3036 } else if (mov->mode & MODE_3G2) {
3039 } else if (mov->mode == MODE_PSP)
3041 else if (mov->mode == MODE_MP4)
3043 else if (mov->mode == MODE_IPOD)
3045 else if (mov->mode == MODE_ISM)
3047 else if (mov->mode == MODE_F4V)
3054 if (mov->mode == MODE_MOV)
3056 else if (mov->mode == MODE_ISM) {
3066 if (mov->mode == MODE_3GP)
3068 else if (mov->mode & MODE_3G2)
3070 else if (mov->mode == MODE_PSP)
3072 else if (mov->mode == MODE_MP4)
3220 MOVMuxContext *mov = s->priv_data;
3224 if (!(mov->flags & FF_MOV_FLAG_FRAGMENT))
3227 if (!(mov->flags & FF_MOV_FLAG_EMPTY_MOOV) && mov->fragments == 0) {
3232 for (i = 0; i < mov->nb_streams; i++)
3233 if (!mov->tracks[i].entry)
3236 if (i < mov->nb_streams)
3240 for (i = 0; i < mov->nb_streams; i++)
3241 mov->tracks[i].data_offset = pos + moov_size + 8;
3243 mov_write_moov_tag(s->pb, mov, s);
3245 buf_size = avio_close_dyn_buf(mov->mdat_buf, &buf);
3246 mov->mdat_buf = NULL;
3252 mov->fragments++;
3253 mov->mdat_size = 0;
3254 for (i = 0; i < mov->nb_streams; i++) {
3255 if (mov->tracks[i].entry)
3256 mov->tracks[i].frag_start += mov->tracks[i].start_dts +
3257 mov->tracks[i].track_duration -
3258 mov->tracks[i].cluster[0].dts;
3259 mov->tracks[i].entry = 0;
3265 for (i = 0; i < mov->nb_streams; i++) {
3266 MOVTrack *track = &mov->tracks[i];
3267 if (mov->flags & FF_MOV_FLAG_SEPARATE_MOOF)
3281 for (i = 0; i < mov->nb_streams; i++) {
3282 MOVTrack *track = &mov->tracks[i];
3290 if (mov->flags & FF_MOV_FLAG_SEPARATE_MOOF) {
3313 info->time = mov->tracks[i].frag_start;
3315 mov_write_tfrf_tags(s->pb, mov, track);
3317 mov_write_moof_tag(s->pb, mov, moof_tracks);
3319 mov->fragments++;
3337 mov->mdat_size = 0;
3345 MOVMuxContext *mov = s->priv_data;
3347 MOVTrack *trk = &mov->tracks[pkt->stream_index];
3356 av_log(s, AV_LOG_ERROR, "Application provided duration: %"PRId64" / timestamp: %"PRId64" is out of range for mov/mp4 format\n",
3368 if (mov->flags & FF_MOV_FLAG_FRAGMENT) {
3370 if (mov->fragments > 0) {
3377 if (!mov->mdat_buf) {
3378 if ((ret = avio_open_dyn_buf(&mov->mdat_buf)) < 0)
3381 pb = mov->mdat_buf;
3427 if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
3437 if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) {
3478 if (!trk->entry && trk->start_dts == AV_NOPTS_VALUE && !supports_edts(mov)) {
3495 mov_parse_vc1_frame(pkt, trk, mov->fragments);
3497 if (mov->mode == MODE_MOV && enc->codec_id == AV_CODEC_ID_MPEG2VIDEO &&
3510 mov->mdat_size += size;
3512 if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams)
3521 MOVMuxContext *mov = s->priv_data;
3522 MOVTrack *trk = &mov->tracks[pkt->stream_index];
3534 if ((mov->max_fragment_duration &&
3535 frag_duration >= mov->max_fragment_duration) ||
3536 (mov->max_fragment_size && mov->mdat_size + size >= mov->max_fragment_size) ||
3537 (mov->flags & FF_MOV_FLAG_FRAG_KEYFRAME &&
3540 if (frag_duration >= mov->min_fragment_duration)
3575 MOVMuxContext *mov = s->priv_data;
3598 for (i = 0; i < mov->nb_streams; i++) {
3599 MOVTrack *trk = &mov->tracks[i];
3621 MOVMuxContext *mov = s->priv_data;
3622 MOVTrack *track = &mov->tracks[tracknum];
3626 track->mode = mov->mode;
3712 MOVMuxContext *mov = s->priv_data;
3713 MOVTrack *track = &mov->tracks[index];
3725 track->mode = mov->mode;
3728 track->timescale = mov->tracks[src_index].timescale;
3759 MOVMuxContext *mov = s->priv_data;
3779 mov->tracks[i].flags |= MOV_TRACK_ENABLED;
3790 mov->per_stream_grouping = 1;
3792 mov->tracks[first[i]].flags |= MOV_TRACK_ENABLED;
3800 MOVMuxContext *mov = s->priv_data;
3803 if (mov->chapter_track) {
3804 if (mov->tracks[mov->chapter_track].enc)
3805 av_freep(&mov->tracks[mov->chapter_track].enc->extradata);
3806 av_freep(&mov->tracks[mov->chapter_track].enc);
3809 for (i = 0; i < mov->nb_streams; i++) {
3810 if (mov->tracks[i].tag == MKTAG('r','t','p',' '))
3811 ff_mov_close_hinting(&mov->tracks[i]);
3812 else if (mov->tracks[i].tag == MKTAG('t','m','c','d') && mov->nb_meta_tmcd)
3813 av_freep(&mov->tracks[i].enc);
3814 av_freep(&mov->tracks[i].cluster);
3815 av_freep(&mov->tracks[i].frag_info);
3817 if (mov->tracks[i].vos_len)
3818 av_freep(&mov->tracks[i].vos_data);
3821 av_freep(&mov->tracks);
3892 MOVMuxContext *mov = s->priv_data;
3897 mov->mode = MODE_MP4;
3900 if (!strcmp("3gp", s->oformat->name)) mov->mode = MODE_3GP;
3901 else if (!strcmp("3g2", s->oformat->name)) mov->mode = MODE_3GP|MODE_3G2;
3902 else if (!strcmp("mov", s->oformat->name)) mov->mode = MODE_MOV;
3903 else if (!strcmp("psp", s->oformat->name)) mov->mode = MODE_PSP;
3904 else if (!strcmp("ipod",s->oformat->name)) mov->mode = MODE_IPOD;
3905 else if (!strcmp("ismv",s->oformat->name)) mov->mode = MODE_ISM;
3906 else if (!strcmp("f4v", s->oformat->name)) mov->mode = MODE_F4V;
3911 mov->exact = 1;
3915 if (mov->max_fragment_duration || mov->max_fragment_size ||
3916 mov->flags & (FF_MOV_FLAG_EMPTY_MOOV |
3919 mov->flags |= FF_MOV_FLAG_FRAGMENT;
3922 if (mov->mode == MODE_ISM)
3923 mov->flags |= FF_MOV_FLAG_EMPTY_MOOV | FF_MOV_FLAG_SEPARATE_MOOF |
3927 if (mov->flags & FF_MOV_FLAG_FASTSTART) {
3928 if ((mov->flags & FF_MOV_FLAG_FRAGMENT) ||
3932 mov->flags &= ~FF_MOV_FLAG_FASTSTART;
3934 mov->reserved_moov_size = -1;
3937 if (!supports_edts(mov) && s->avoid_negative_ts < 0) {
3944 (!(mov->flags & FF_MOV_FLAG_FRAGMENT) || mov->ism_lookahead)) {
3950 if (mov->mode == MODE_PSP) {
3969 mov->nb_streams = s->nb_streams;
3970 if (mov->mode & (MODE_MP4|MODE_MOV|MODE_IPOD) && s->nb_chapters)
3971 mov->chapter_track = mov->nb_streams++;
3973 if (mov->flags & FF_MOV_FLAG_RTP_HINT) {
3975 hint_track = mov->nb_streams;
3980 mov->nb_streams++;
3985 if (mov->mode == MODE_MOV) {
3986 tmcd_track = mov->nb_streams;
3993 mov->nb_meta_tmcd++;
3997 if (mov->nb_meta_tmcd) {
4003 mov->nb_meta_tmcd = 0;
4008 mov->nb_streams += mov->nb_meta_tmcd;
4013 mov->tracks = av_mallocz_array((mov->nb_streams + 1), sizeof(*mov->tracks));
4014 if (!mov->tracks)
4019 MOVTrack *track= &mov->tracks[i];
4024 track->language = ff_mov_iso639_to_lang(lang?lang->value:"und", mov->mode!=MODE_MOV);
4027 track->mode = mov->mode;
4051 if (mov->video_track_timescale) {
4052 track->timescale = mov->video_track_timescale;
4059 av_log(s, AV_LOG_ERROR, "Resolution %dx%d too large for mov/mp4\n", st->codec->width, st->codec->height);
4109 if (mov->mode == MODE_ISM)
4129 MOVTrack *track= &mov->tracks[i];
4137 MOVTrack *trackj= &mov->tracks[j];
4154 if (mov->reserved_moov_size){
4155 mov->reserved_moov_pos= avio_tell(pb);
4156 if (mov->reserved_moov_size > 0)
4157 avio_skip(pb, mov->reserved_moov_size);
4160 if (mov->flags & FF_MOV_FLAG_FRAGMENT) {
4162 if (!(mov->flags & (FF_MOV_FLAG_FRAG_KEYFRAME |
4164 !mov->max_fragment_duration && !mov->max_fragment_size)
4165 mov->flags |= FF_MOV_FLAG_FRAG_KEYFRAME;
4167 if (mov->flags & FF_MOV_FLAG_FASTSTART)
4168 mov->reserved_moov_pos = avio_tell(pb);
4169 mov_write_mdat_tag(pb, mov);
4173 mov->time = ff_iso8601_to_unix_time(t->value);
4174 if (mov->time)
4175 mov->time += 0x7C25B080; // 1970 based -> 1904 based
4177 if (mov->chapter_track)
4178 if ((ret = mov_create_chapter_track(s, mov->chapter_track)) < 0)
4181 if (mov->flags & FF_MOV_FLAG_RTP_HINT) {
4194 if (mov->nb_meta_tmcd) {
4214 if (mov->flags & FF_MOV_FLAG_ISML)
4215 mov_write_isml_manifest(pb, mov);
4217 if (mov->flags & FF_MOV_FLAG_EMPTY_MOOV) {
4218 mov_write_moov_tag(pb, mov, s);
4219 mov->fragments++;
4232 MOVMuxContext *mov = s->priv_data;
4236 mov_write_moov_tag(moov_buf, mov, s);
4249 MOVMuxContext *mov = s->priv_data;
4255 for (i = 0; i < mov->nb_streams; i++)
4256 mov->tracks[i].data_offset += moov_size;
4265 for (i = 0; i < mov->nb_streams; i++)
4266 mov->tracks[i].data_offset += moov_size2 - moov_size;
4274 MOVMuxContext *mov = s->priv_data;
4305 avio_seek(s->pb, mov->reserved_moov_pos + moov_size, SEEK_SET);
4308 avio_seek(read_pb, mov->reserved_moov_pos, SEEK_SET);
4336 MOVMuxContext *mov = s->priv_data;
4346 for (i = 0; i < mov->nb_streams; i++) {
4347 MOVTrack *trk = &mov->tracks[i];
4358 if (!mov->chapter_track && !(mov->flags & FF_MOV_FLAG_FRAGMENT)) {
4359 if (mov->mode & (MODE_MP4|MODE_MOV|MODE_IPOD) && s->nb_chapters) {
4360 mov->chapter_track = mov->nb_streams++;
4361 if ((res = mov_create_chapter_track(s, mov->chapter_track)) < 0)
4366 if (!(mov->flags & FF_MOV_FLAG_FRAGMENT)) {
4370 if (mov->mdat_size + 8 <= UINT32_MAX) {
4371 avio_seek(pb, mov->mdat_pos, SEEK_SET);
4372 avio_wb32(pb, mov->mdat_size + 8);
4375 avio_seek(pb, mov->mdat_pos - 8, SEEK_SET);
4380 avio_wb64(pb, mov->mdat_size + 16);
4382 avio_seek(pb, mov->reserved_moov_size > 0 ? mov->reserved_moov_pos : moov_pos, SEEK_SET);
4384 if (mov->flags & FF_MOV_FLAG_FASTSTART) {
4388 avio_seek(s->pb, mov->reserved_moov_pos, SEEK_SET);
4389 mov_write_moov_tag(pb, mov, s);
4391 } else if (mov->reserved_moov_size > 0) {
4393 mov_write_moov_tag(pb, mov, s);
4394 size = mov->reserved_moov_size - (avio_tell(pb) - mov->reserved_moov_pos);
4405 mov_write_moov_tag(pb, mov, s);
4409 mov_write_mfra_tag(pb, mov);
4412 for (i = 0; i < mov->nb_streams; i++) {
4413 if (mov->flags & FF_MOV_FLAG_FRAGMENT &&
4414 mov->tracks[i].vc1_info.struct_offset && s->pb->seekable) {
4417 if (mov_write_dvc1_structs(&mov->tracks[i], buf) >= 0) {
4418 avio_seek(pb, mov->tracks[i].vc1_info.struct_offset, SEEK_SET);
4432 MOV_CLASS(mov)
4434 .name = "mov",
4436 .extensions = "mov",