Lines Matching full:cat
116 ConcatContext *cat = avf->priv_data; in add_file() local
124 if (cat->safe && !safe_filename(filename)) { in add_file()
142 if (cat->nb_files >= *nb_files_alloc) { in add_file()
145 if (n <= cat->nb_files || n > SIZE_MAX / sizeof(*cat->files) || in add_file()
146 !(new_files = av_realloc(cat->files, n * sizeof(*cat->files)))) in add_file()
148 cat->files = new_files; in add_file()
152 file = &cat->files[cat->nb_files++]; in add_file()
201 ConcatContext *cat = avf->priv_data; in detect_stream_specific() local
202 AVStream *st = cat->avf->streams[idx]; in detect_stream_specific()
203 ConcatStream *cs = &cat->cur_file->streams[idx]; in detect_stream_specific()
208 if (cat->auto_convert && st->codecpar->codec_id == AV_CODEC_ID_H264) { in detect_stream_specific()
213 av_log(cat->avf, AV_LOG_INFO, in detect_stream_specific()
243 ConcatContext *cat = avf->priv_data; in match_streams_one_to_one() local
247 for (i = cat->cur_file->nb_streams; i < cat->avf->nb_streams; i++) { in match_streams_one_to_one()
254 if ((ret = copy_stream_props(st, cat->avf->streams[i])) < 0) in match_streams_one_to_one()
256 cat->cur_file->streams[i].out_stream_index = i; in match_streams_one_to_one()
263 ConcatContext *cat = avf->priv_data; in match_streams_exact_id() local
267 for (i = cat->cur_file->nb_streams; i < cat->avf->nb_streams; i++) { in match_streams_exact_id()
268 st = cat->avf->streams[i]; in match_streams_exact_id()
276 cat->cur_file->streams[i].out_stream_index = j; in match_streams_exact_id()
285 ConcatContext *cat = avf->priv_data; in match_streams() local
289 if (cat->cur_file->nb_streams >= cat->avf->nb_streams) in match_streams()
291 map = av_realloc(cat->cur_file->streams, in match_streams()
292 cat->avf->nb_streams * sizeof(*map)); in match_streams()
295 cat->cur_file->streams = map; in match_streams()
296 memset(map + cat->cur_file->nb_streams, 0, in match_streams()
297 (cat->avf->nb_streams - cat->cur_file->nb_streams) * sizeof(*map)); in match_streams()
299 for (i = cat->cur_file->nb_streams; i < cat->avf->nb_streams; i++) { in match_streams()
304 switch (cat->stream_match_mode) { in match_streams()
316 cat->cur_file->nb_streams = cat->avf->nb_streams; in match_streams()
335 ConcatContext *cat = avf->priv_data; in open_file() local
336 ConcatFile *file = &cat->files[fileno]; in open_file()
340 if (cat->avf) in open_file()
341 avformat_close_input(&cat->avf); in open_file()
343 cat->avf = avformat_alloc_context(); in open_file()
344 if (!cat->avf) in open_file()
347 cat->avf->flags |= avf->flags & ~AVFMT_FLAG_CUSTOM_IO; in open_file()
348 cat->avf->interrupt_callback = avf->interrupt_callback; in open_file()
350 if ((ret = ff_copy_whiteblacklists(cat->avf, avf)) < 0) in open_file()
357 if ((ret = avformat_open_input(&cat->avf, file->url, NULL, &options)) < 0 || in open_file()
358 (ret = avformat_find_stream_info(cat->avf, NULL)) < 0) { in open_file()
361 avformat_close_input(&cat->avf); in open_file()
369 cat->cur_file = file; in open_file()
371 cat->files[fileno - 1].start_time + in open_file()
372 cat->files[fileno - 1].duration; in open_file()
373 file->file_start_time = (cat->avf->start_time == AV_NOPTS_VALUE) ? 0 : cat->avf->start_time; in open_file()
375 file->duration = get_best_effort_duration(file, cat->avf); in open_file()
377 if (cat->segment_time_metadata) { in open_file()
386 if ((ret = avformat_seek_file(cat->avf, -1, INT64_MIN, file->inpoint, file->inpoint, 0)) < 0) in open_file()
394 ConcatContext *cat = avf->priv_data; in concat_read_close() local
397 for (i = 0; i < cat->nb_files; i++) { in concat_read_close()
398 av_freep(&cat->files[i].url); in concat_read_close()
399 for (j = 0; j < cat->files[i].nb_streams; j++) { in concat_read_close()
400 if (cat->files[i].streams[j].bsf) in concat_read_close()
401 av_bsf_free(&cat->files[i].streams[j].bsf); in concat_read_close()
403 av_freep(&cat->files[i].streams); in concat_read_close()
404 av_dict_free(&cat->files[i].metadata); in concat_read_close()
405 av_dict_free(&cat->files[i].options); in concat_read_close()
407 if (cat->avf) in concat_read_close()
408 avformat_close_input(&cat->avf); in concat_read_close()
409 av_freep(&cat->files); in concat_read_close()
460 ConcatContext *cat = avf->priv_data; in concat_parse_script() local
492 if ((dir->flags & NEEDS_UNSAFE) && cat->safe) { in concat_parse_script()
496 if ((dir->flags & NEEDS_FILE) && !cat->nb_files) { in concat_parse_script()
649 ConcatContext *cat = avf->priv_data; in concat_read_header() local
657 if (!cat->nb_files) { in concat_read_header()
662 for (i = 0; i < cat->nb_files; i++) { in concat_read_header()
663 if (cat->files[i].start_time == AV_NOPTS_VALUE) in concat_read_header()
664 cat->files[i].start_time = time; in concat_read_header()
666 time = cat->files[i].start_time; in concat_read_header()
667 if (cat->files[i].user_duration == AV_NOPTS_VALUE) { in concat_read_header()
668 … if (cat->files[i].inpoint == AV_NOPTS_VALUE || cat->files[i].outpoint == AV_NOPTS_VALUE || in concat_read_header()
669 …cat->files[i].outpoint - (uint64_t)cat->files[i].inpoint != av_sat_sub64(cat->files[i].outpoint, c… in concat_read_header()
672 cat->files[i].user_duration = cat->files[i].outpoint - cat->files[i].inpoint; in concat_read_header()
674 cat->files[i].duration = cat->files[i].user_duration; in concat_read_header()
675 time += cat->files[i].user_duration; in concat_read_header()
677 if (i == cat->nb_files) { in concat_read_header()
679 cat->seekable = 1; in concat_read_header()
682 cat->stream_match_mode = avf->nb_streams ? MATCH_EXACT_ID : in concat_read_header()
692 ConcatContext *cat = avf->priv_data; in open_next_file() local
693 unsigned fileno = cat->cur_file - cat->files; in open_next_file()
695 cat->cur_file->duration = get_best_effort_duration(cat->cur_file, cat->avf); in open_next_file()
697 if (++fileno >= cat->nb_files) { in open_next_file()
698 cat->eof = 1; in open_next_file()
729 static int packet_after_outpoint(ConcatContext *cat, AVPacket *pkt) in packet_after_outpoint() argument
731 if (cat->cur_file->outpoint != AV_NOPTS_VALUE && pkt->dts != AV_NOPTS_VALUE) { in packet_after_outpoint()
732 return av_compare_ts(pkt->dts, cat->avf->streams[pkt->stream_index]->time_base, in packet_after_outpoint()
733 cat->cur_file->outpoint, AV_TIME_BASE_Q) >= 0; in packet_after_outpoint()
740 ConcatContext *cat = avf->priv_data; in concat_read_packet() local
747 if (cat->eof) in concat_read_packet()
750 if (!cat->avf) in concat_read_packet()
754 ret = av_read_frame(cat->avf, pkt); in concat_read_packet()
765 if (packet_after_outpoint(cat, pkt)) { in concat_read_packet()
771 cs = &cat->cur_file->streams[pkt->stream_index]; in concat_read_packet()
781 st = cat->avf->streams[pkt->stream_index]; in concat_read_packet()
784 (unsigned)(cat->cur_file - cat->files), pkt->stream_index, in concat_read_packet()
788 delta = av_rescale_q(cat->cur_file->start_time - cat->cur_file->file_inpoint, in concat_read_packet()
790 cat->avf->streams[pkt->stream_index]->time_base); in concat_read_packet()
798 if (cat->cur_file->metadata) { in concat_read_packet()
800 char* packed_metadata = av_packet_pack_dictionary(cat->cur_file->metadata, &metadata_len); in concat_read_packet()
811 if (cat->cur_file->duration == AV_NOPTS_VALUE && sti->cur_dts != AV_NOPTS_VALUE) { in concat_read_packet()
813 if (cat->cur_file->next_dts == AV_NOPTS_VALUE || next_dts > cat->cur_file->next_dts) { in concat_read_packet()
814 cat->cur_file->next_dts = next_dts; in concat_read_packet()
825 ConcatContext *cat = avf->priv_data; in try_seek() local
826 int64_t t0 = cat->cur_file->start_time - cat->cur_file->file_inpoint; in try_seek()
832 if (stream >= cat->avf->nb_streams) in try_seek()
834 ff_rescale_interval(AV_TIME_BASE_Q, cat->avf->streams[stream]->time_base, in try_seek()
837 return avformat_seek_file(cat->avf, stream, min_ts, ts, max_ts, flags); in try_seek()
843 ConcatContext *cat = avf->priv_data; in real_seek() local
854 right = cat->nb_files; in real_seek()
859 else if (!cat->seekable) in real_seek()
864 if (ts < cat->files[mid].start_time) in real_seek()
870 if (cat->cur_file != &cat->files[left]) { in real_seek()
874 cat->avf = cur_avf; in real_seek()
879 left < cat->nb_files - 1 && in real_seek()
880 cat->files[left + 1].start_time < max_ts) { in real_seek()
881 if (cat->cur_file == &cat->files[left]) in real_seek()
882 cat->avf = NULL; in real_seek()
893 ConcatContext *cat = avf->priv_data; in concat_seek() local
894 ConcatFile *cur_file_saved = cat->cur_file; in concat_seek()
895 AVFormatContext *cur_avf_saved = cat->avf; in concat_seek()
900 cat->avf = NULL; in concat_seek()
902 if (cat->cur_file != cur_file_saved) { in concat_seek()
903 if (cat->avf) in concat_seek()
904 avformat_close_input(&cat->avf); in concat_seek()
906 cat->avf = cur_avf_saved; in concat_seek()
907 cat->cur_file = cur_file_saved; in concat_seek()
909 if (cat->cur_file != cur_file_saved) { in concat_seek()
912 cat->eof = 0; in concat_seek()