Add streaming_start_copy() and streaming_start_component_find_by_index()

This commit is contained in:
Andreas Öman 2010-06-16 21:08:28 +00:00
parent d025fbf028
commit 78832faacd
2 changed files with 52 additions and 0 deletions

View file

@ -358,3 +358,47 @@ streaming_code2txt(int code)
return "Unknown reason";
}
}
/**
*
*/
streaming_start_t *
streaming_start_copy(const streaming_start_t *src)
{
int i;
size_t siz = sizeof(streaming_start_t) +
sizeof(streaming_start_component_t) * src->ss_num_components;
streaming_start_t *dst = malloc(siz);
memcpy(dst, src, siz);
transport_source_info_copy(&dst->ss_si, &src->ss_si);
for(i = 0; i < dst->ss_num_components; i++) {
streaming_start_component_t *ssc = &dst->ss_components[i];
if(ssc->ssc_global_header != NULL)
ssc->ssc_global_header = memcpy(malloc(ssc->ssc_global_header_len),
ssc->ssc_global_header,
ssc->ssc_global_header_len);
}
dst->ss_refcount = 1;
return dst;
}
/**
*
*/
streaming_start_component_t *
streaming_start_component_find_by_index(streaming_start_t *ss, int idx)
{
int i;
for(i = 0; i < ss->ss_num_components; i++) {
streaming_start_component_t *ssc = &ss->ss_components[i];
if(ssc->ssc_index == idx)
return ssc;
}
return NULL;
}

View file

@ -36,6 +36,8 @@ typedef struct streaming_start_component {
uint8_t *ssc_global_header;
int ssc_global_header_len;
int ssc_frameduration;
} streaming_start_component_t;
@ -91,9 +93,15 @@ void streaming_target_deliver2(streaming_target_t *st, streaming_message_t *sm);
void streaming_start_unref(streaming_start_t *ss);
streaming_start_t *streaming_start_copy(const streaming_start_t *src);
int streaming_pad_probe_type(streaming_pad_t *sp,
streaming_message_type_t smt);
const char *streaming_code2txt(int code);
streaming_start_component_t *streaming_start_component_find_by_index(streaming_start_t *ss, int idx);
#endif /* STREAMING_H_ */