Changeset 1040:4d32270e0139 in roaraudio for roard/meta.c


Ignore:
Timestamp:
12/23/08 07:08:04 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

update meta data of recv-meta streams on finalize

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/meta.c

    r1038 r1040  
    165165 
    166166int stream_meta_finalize(int id) { 
     167 register int dir; 
     168 register int co, ci, i; 
     169 struct roar_stream_server * s; 
     170 
     171 if ( streams_get_flag(id, ROAR_FLAG_META) != 1 ) // ignore non meta streams 
     172  return 0; 
     173 
     174 dir = ROAR_STREAM(g_streams[id])->dir; 
     175 
     176 if ( dir != ROAR_DIR_PLAY   && dir != ROAR_DIR_META &&  // ignore on non input streams 
     177      dir != ROAR_DIR_FILTER && dir != ROAR_DIR_BIDIR ) 
     178  return 0; 
     179 
     180 ROAR_DBG("stream_meta_finalize(id=%i) = ?", id); 
     181 
     182 for (co = 0; co < ROAR_STREAMS_MAX; co++) { 
     183  if ( g_streams[co] == NULL ) 
     184   continue; 
     185 
     186  dir = ROAR_STREAM(g_streams[co])->dir; 
     187 
     188  if ( dir != ROAR_DIR_MONITOR && dir != ROAR_DIR_FILTER && 
     189       dir != ROAR_DIR_META    && dir != ROAR_DIR_BIDIR  && 
     190       dir != ROAR_DIR_OUTPUT                             ) 
     191   continue; 
     192 
     193  if ( streams_get_flag(co, ROAR_FLAG_META) != 1 ) 
     194   continue; 
     195 
     196  ROAR_DBG("stream_meta_finalize(id=%i): found output stream: id=%i", id, co); 
     197  stream_meta_clear(co); 
     198 
     199  for (ci = 0; ci < ROAR_STREAMS_MAX; ci++) { 
     200   if ( g_streams[ci] == NULL ) 
     201    continue; 
     202 
     203   dir = ROAR_STREAM(g_streams[ci])->dir; 
     204 
     205   if ( dir != ROAR_DIR_PLAY   && dir != ROAR_DIR_META && 
     206        dir != ROAR_DIR_FILTER && dir != ROAR_DIR_BIDIR ) 
     207    continue; 
     208 
     209   if ( streams_get_flag(ci, ROAR_FLAG_META) != 1 ) 
     210    continue; 
     211 
     212   ROAR_DBG("stream_meta_finalize(id=%i): found input stream: id=%i", id, ci); 
     213 
     214   // ok, next we copy the date of ci to co: 
     215   s = g_streams[ci]; 
     216 
     217   for (i = 0; i < ROAR_META_MAX_PER_STREAM; i++) { 
     218    if ( s->meta[i].type == ROAR_META_TYPE_NONE ) 
     219     continue; 
     220 
     221    ROAR_DBG("stream_meta_finalize(id=%i): found meta data, copy: %i->%i", id, ci, co); 
     222    stream_meta_add(co, s->meta[i].type, s->meta[i].key, s->meta[i].value); // ignore errors 
     223   } 
     224  } 
     225 } 
     226 
    167227 return 0; 
    168228} 
Note: See TracChangeset for help on using the changeset viewer.