Changeset 2151:1871577d2258 in roaraudio
- Timestamp:
- 07/24/09 17:35:34 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/include/streams.h
r2082 r2151 78 78 char * name; 79 79 int ready; 80 struct roar_buffer * outputbuffer; 80 81 } * g_streams[ROAR_STREAMS_MAX]; 81 82 … … 120 121 int stream_unshift_buffer (int id, struct roar_buffer * buf); 121 122 123 int stream_outputbuffer_request(int id, struct roar_buffer ** buf, size_t len); 124 int stream_outputbuffer_destroy(int id); 125 122 126 int streams_check (int id); 123 127 int streams_send_mon (int id); -
roard/streams.c
r2150 r2151 95 95 s->primary = 0; 96 96 s->ready = 0; 97 s->outputbuffer = NULL; 97 98 98 99 s->mixer.scale = 65535; … … 176 177 client_stream_delete(s->client, id); 177 178 } 179 180 stream_outputbuffer_destroy(id); 178 181 179 182 if ( s->buffer != NULL ) … … 1038 1041 } 1039 1042 1043 int stream_outputbuffer_request(int id, struct roar_buffer ** buf, size_t len) { 1044 register struct roar_stream_server * ss; 1045 size_t buflen; 1046 int ret; 1047 1048 if ( (ss = g_streams[id]) == NULL ) 1049 return -1; 1050 1051 if ( buf != NULL ) /* just be be sure */ 1052 *buf = NULL; 1053 1054 if ( ss->outputbuffer != NULL ) { 1055 if ( roar_buffer_get_len(ss->outputbuffer, &buflen) == 0 ) { 1056 if ( buflen == len ) { 1057 if ( buf != NULL ) 1058 *buf = ss->outputbuffer; 1059 return 0; 1060 } else if ( buflen > len ) { 1061 if ( roar_buffer_set_len(ss->outputbuffer, len) == 0 ) { 1062 if ( buf != NULL ) 1063 *buf = ss->outputbuffer; 1064 return 0; 1065 } 1066 } 1067 } 1068 1069 // if the buffer is not suitable: 1070 1071 ret = roar_buffer_free(ss->outputbuffer); 1072 ss->outputbuffer = NULL; 1073 if ( ret == -1 ) 1074 return ret; 1075 } 1076 1077 if ( roar_buffer_new(&(ss->outputbuffer), len) == -1 ) 1078 return -1; 1079 1080 if ( buf != NULL ) 1081 *buf = ss->outputbuffer; 1082 1083 return 0; 1084 } 1085 1086 int stream_outputbuffer_destroy(int id) { 1087 int ret; 1088 register struct roar_stream_server * ss; 1089 1090 if ( (ss = g_streams[id]) == NULL ) 1091 return -1; 1092 1093 if ( ss->outputbuffer != NULL ) { 1094 ret = roar_buffer_free(ss->outputbuffer); 1095 ss->outputbuffer = NULL; 1096 return ret; 1097 } 1098 1099 return 0; 1100 } 1101 1040 1102 int streams_check (int id) { 1041 1103 int fh;
Note: See TracChangeset
for help on using the changeset viewer.