|
|
@@ -694,47 +694,6 @@ AVProgram *av_new_program(AVFormatContext *ac, int id)
|
|
|
return program;
|
|
|
}
|
|
|
|
|
|
-AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base,
|
|
|
- int64_t start, int64_t end, const char *title)
|
|
|
-{
|
|
|
- FFFormatContext *const si = ffformatcontext(s);
|
|
|
- AVChapter *chapter = NULL;
|
|
|
- int ret;
|
|
|
-
|
|
|
- if (end != AV_NOPTS_VALUE && start > end) {
|
|
|
- av_log(s, AV_LOG_ERROR, "Chapter end time %"PRId64" before start %"PRId64"\n", end, start);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- if (!s->nb_chapters) {
|
|
|
- si->chapter_ids_monotonic = 1;
|
|
|
- } else if (!si->chapter_ids_monotonic || s->chapters[s->nb_chapters-1]->id >= id) {
|
|
|
- for (unsigned i = 0; i < s->nb_chapters; i++)
|
|
|
- if (s->chapters[i]->id == id)
|
|
|
- chapter = s->chapters[i];
|
|
|
- if (!chapter)
|
|
|
- si->chapter_ids_monotonic = 0;
|
|
|
- }
|
|
|
-
|
|
|
- if (!chapter) {
|
|
|
- chapter = av_mallocz(sizeof(AVChapter));
|
|
|
- if (!chapter)
|
|
|
- return NULL;
|
|
|
- ret = av_dynarray_add_nofree(&s->chapters, &s->nb_chapters, chapter);
|
|
|
- if (ret < 0) {
|
|
|
- av_free(chapter);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
- }
|
|
|
- av_dict_set(&chapter->metadata, "title", title, 0);
|
|
|
- chapter->id = id;
|
|
|
- chapter->time_base = time_base;
|
|
|
- chapter->start = start;
|
|
|
- chapter->end = end;
|
|
|
-
|
|
|
- return chapter;
|
|
|
-}
|
|
|
-
|
|
|
void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx)
|
|
|
{
|
|
|
AVProgram *program = NULL;
|