Commit d1b47be8 authored by michael's avatar michael

make new_service() update existing info sanely


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@9200 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 03c6c9cf
...@@ -364,7 +364,8 @@ static int parse_section_header(SectionHeader *h, ...@@ -364,7 +364,8 @@ static int parse_section_header(SectionHeader *h,
static MpegTSService *new_service(MpegTSContext *ts, int sid, static MpegTSService *new_service(MpegTSContext *ts, int sid,
char *provider_name, char *name) char *provider_name, char *name)
{ {
MpegTSService *service; MpegTSService *service=NULL;
int i;
#ifdef DEBUG_SI #ifdef DEBUG_SI
av_log(ts->stream, AV_LOG_DEBUG, "new_service: " av_log(ts->stream, AV_LOG_DEBUG, "new_service: "
...@@ -372,13 +373,24 @@ static MpegTSService *new_service(MpegTSContext *ts, int sid, ...@@ -372,13 +373,24 @@ static MpegTSService *new_service(MpegTSContext *ts, int sid,
sid, provider_name, name); sid, provider_name, name);
#endif #endif
service = av_mallocz(sizeof(MpegTSService)); for(i=0; i<ts->nb_services; i++)
if (!service) if(ts->services[i]->sid == sid)
return NULL; service= ts->services[i];
if(!service){
service = av_mallocz(sizeof(MpegTSService));
if (!service)
return NULL;
dynarray_add(&ts->services, &ts->nb_services, service);
}
service->sid = sid; service->sid = sid;
service->provider_name = provider_name; assert((!provider_name) == (!name));
service->name = name; if(name){
dynarray_add(&ts->services, &ts->nb_services, service); av_free(service->provider_name);
av_free(service-> name);
service->provider_name = provider_name;
service-> name = name;
}
return service; return service;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment