aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorNico Sabbi <nicola.sabbi@poste.it>2007-09-25 20:45:46 +0000
committerNico Sabbi <nicola.sabbi@poste.it>2007-09-25 20:45:46 +0000
commit15afa396e4461e3ecabfecb13afb7ab95cf5aa9d (patch)
tree3e61c1bc88098fc0261324d769c8bc69d4324677 /libavformat/utils.c
parent9990460353251d43a95aa564ed9c0ffd8e253a0e (diff)
downloadffmpeg-15afa396e4461e3ecabfecb13afb7ab95cf5aa9d.tar.gz
Added definition and utility functions to handle AVProgram(s) in AVFormatContext
Originally committed as revision 10579 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r--libavformat/utils.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index dcdd5f0108..8700e9e4e5 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2067,6 +2067,11 @@ void av_close_input_file(AVFormatContext *s)
av_free(st->codec);
av_free(st);
}
+ for(i=s->nb_programs-1; i>=0; i--) {
+ av_freep(&s->programs[i]->provider_name);
+ av_freep(&s->programs[i]->name);
+ av_freep(&s->programs[i]);
+ }
flush_packet_queue(s);
must_open_file = 1;
if (s->iformat->flags & AVFMT_NOFILE) {
@@ -2113,6 +2118,43 @@ AVStream *av_new_stream(AVFormatContext *s, int id)
return st;
}
+AVProgram *av_new_program(AVFormatContext *ac, int id)
+{
+ AVProgram *program=NULL;
+ int i;
+
+#ifdef DEBUG_SI
+ av_log(ac, AV_LOG_DEBUG, "new_program: id=0x%04x\n", id);
+#endif
+
+ for(i=0; i<ac->nb_programs; i++)
+ if(ac->programs[i]->id == id)
+ program = ac->programs[i];
+
+ if(!program){
+ program = av_mallocz(sizeof(AVProgram));
+ if (!program)
+ return NULL;
+ dynarray_add(&ac->programs, &ac->nb_programs, program);
+ program->discard = AVDISCARD_NONE;
+ }
+ program->id = id;
+
+ return program;
+}
+
+void av_set_program_name(AVProgram *program, char *provider_name, char *name)
+{
+ assert(!provider_name == !name);
+ if(name){
+ av_free(program->provider_name);
+ av_free(program-> name);
+ program->provider_name = av_strdup(provider_name);
+ program-> name = av_strdup( name);
+ }
+}
+
+
/************************************************************/
/* output media file */