forked from FFmpeg/FFmpeg
make new_service() update existing info sanely
Originally committed as revision 9200 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0618bb1c5b
commit
657ced8cdb
1 changed files with 19 additions and 7 deletions
|
@ -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,
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue