[Cvs-annodex] commit (annodex):
liboggplay/trunk/include/oggplay/oggplay_callback_info.h
liboggplay/trunk/src/liboggplay/Version_script.in
liboggplay/trunk/src/liboggplay/oggplay_callback.c
liboggplay/trunk/src/liboggplay/oggplay_callback_info.c
liboggplay/trunk/src/liboggplay/oggplay_data.c
liboggplay/trunk/src/liboggplay/oggplay_data.h
liboggplay/trunk/src/liboggplay/oggplay_private.h
liboggplay/trunk/src/tests/dump-stream-sync-info.c
shans
nobody at lists.annodex.net
Fri Sep 1 06:27:25 UTC 2006
Update of /var/local/lib/svn/annodex (new revision 2415)
Modified files:
liboggplay/trunk/include/oggplay/oggplay_callback_info.h
liboggplay/trunk/src/liboggplay/Version_script.in
liboggplay/trunk/src/liboggplay/oggplay_callback.c
liboggplay/trunk/src/liboggplay/oggplay_callback_info.c
liboggplay/trunk/src/liboggplay/oggplay_data.c
liboggplay/trunk/src/liboggplay/oggplay_data.h
liboggplay/trunk/src/liboggplay/oggplay_private.h
liboggplay/trunk/src/tests/dump-stream-sync-info.c
Log Message:
Added audio data capture and statistics. Fixed dump-stream-sync-info to use
number of samples available rather than number of packets.
Modified: liboggplay/trunk/include/oggplay/oggplay_callback_info.h
===================================================================
--- liboggplay/trunk/include/oggplay/oggplay_callback_info.h 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/include/oggplay/oggplay_callback_info.h 2006-09-01 06:27:24 UTC (rev 2415)
@@ -67,6 +67,9 @@
oggplay_callback_info_get_record(OggPlayCallbackInfo *info, int num,
int record);
+int
+oggplay_callback_info_get_record_size(OggPlayDataHeader *header);
+
OggPlayVideoData *
oggplay_callback_info_get_video_data(OggPlayDataHeader *header);
Modified: liboggplay/trunk/src/liboggplay/Version_script.in
===================================================================
--- liboggplay/trunk/src/liboggplay/Version_script.in 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/liboggplay/Version_script.in 2006-09-01 06:27:24 UTC (rev 2415)
@@ -25,6 +25,7 @@
oggplay_callback_info_get_available_records;
oggplay_callback_info_get_required_records;
oggplay_callback_info_get_record;
+ oggplay_callback_info_get_record_size;
oggplay_callback_info_get_video_data;
local:
*;
Modified: liboggplay/trunk/src/liboggplay/oggplay_callback.c
===================================================================
--- liboggplay/trunk/src/liboggplay/oggplay_callback.c 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/liboggplay/oggplay_callback.c 2006-09-01 06:27:24 UTC (rev 2415)
@@ -149,8 +149,13 @@
}
int
-oggplay_fish_sound_callback(FishSound * fsound, short * pcm[], long frames,
- void *user_data) {
+oggplay_fish_sound_callback_shorts(FishSound * fsound, short * pcm[],
+ long frames, void *user_data) {
+
+ OggPlayVorbisDecode *decoder = (OggPlayVorbisDecode *)user_data;
+
+ oggplay_data_handle_vorbis_data(&(decoder->decoder), pcm, frames,
+ sizeof(short));
return FISH_SOUND_CONTINUE;
}
@@ -164,7 +169,8 @@
fish_sound_set_interleave(decoder->sound_handle, 0);
fish_sound_set_decoded_short(decoder->sound_handle,
- oggplay_fish_sound_callback, NULL);
+ oggplay_fish_sound_callback_shorts,
+ (void *)decoder);
}
int
Modified: liboggplay/trunk/src/liboggplay/oggplay_callback_info.c
===================================================================
--- liboggplay/trunk/src/liboggplay/oggplay_callback_info.c 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/liboggplay/oggplay_callback_info.c 2006-09-01 06:27:24 UTC (rev 2415)
@@ -146,9 +146,26 @@
return (info + track)->records[record];
}
+int
+oggplay_callback_info_get_record_size(OggPlayDataHeader *header) {
+
+ if (header == NULL) {
+ return 0;
+ }
+
+ return header->samples_in_record;
+
+}
+
OggPlayVideoData *
oggplay_callback_info_get_video_data(OggPlayDataHeader *header) {
+ if (header == NULL) {
+ return NULL;
+ }
+
return &((OggPlayVideoRecord *)header)->data;
}
+
+
Modified: liboggplay/trunk/src/liboggplay/oggplay_data.c
===================================================================
--- liboggplay/trunk/src/liboggplay/oggplay_data.c 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/liboggplay/oggplay_data.c 2006-09-01 06:27:24 UTC (rev 2415)
@@ -129,6 +129,20 @@
}
void
+oggplay_data_handle_vorbis_data (OggPlayDecode *decode, void *data,
+ int samples, int samplesize) {
+
+ OggPlayAudioRecord * record = malloc(sizeof (OggPlayAudioRecord) +
+ samples * samplesize);
+
+ oggplay_data_initialise_header(decode, &(record->header));
+ record->header.samples_in_record = samples;
+ record->data = data;
+
+ oggplay_data_add_to_list(decode, &(record->header));
+}
+
+void
oggplay_data_handle_theora_frame (OggPlayDecode *decode, yuv_buffer *buffer) {
int size = sizeof (OggPlayVideoRecord);
@@ -153,6 +167,7 @@
* trying not to pass negative output stride issues on to the poor user.
*/
record = malloc (size);
+ record->header.samples_in_record = 1;
data = &(record->data);
oggplay_data_initialise_header(decode, &(record->header));
data->y_width = buffer->y_width;
Modified: liboggplay/trunk/src/liboggplay/oggplay_data.h
===================================================================
--- liboggplay/trunk/src/liboggplay/oggplay_data.h 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/liboggplay/oggplay_data.h 2006-09-01 06:27:24 UTC (rev 2415)
@@ -45,6 +45,10 @@
oggplay_data_handle_theora_frame (OggPlayDecode *decode, yuv_buffer *buffer);
void
+oggplay_data_handle_vorbis_data (OggPlayDecode *decode, void *data,
+ int samples, int samplesize);
+
+void
oggplay_data_clean_list (OggPlayDecode *decode);
#endif
Modified: liboggplay/trunk/src/liboggplay/oggplay_private.h
===================================================================
--- liboggplay/trunk/src/liboggplay/oggplay_private.h 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/liboggplay/oggplay_private.h 2006-09-01 06:27:24 UTC (rev 2415)
@@ -56,6 +56,11 @@
OggPlayVideoData data;
} OggPlayVideoRecord;
+typedef struct {
+ OggPlayDataHeader header;
+ void * data;
+} OggPlayAudioRecord;
+
struct _OggPlay;
struct _OggPlayCallbackInfo {
Modified: liboggplay/trunk/src/tests/dump-stream-sync-info.c
===================================================================
--- liboggplay/trunk/src/tests/dump-stream-sync-info.c 2006-08-31 16:14:59 UTC (rev 2414)
+++ liboggplay/trunk/src/tests/dump-stream-sync-info.c 2006-09-01 06:27:24 UTC (rev 2415)
@@ -39,12 +39,23 @@
for (i = 0; i < num_records; i++)
{
+
+ int j;
+
available = oggplay_callback_info_get_available_records(info, i);
required = oggplay_callback_info_get_required_records(info, i);
type = oggplay_callback_info_get_type(info, i);
- overrun = available - required;
+
+ overrun = 0;
+
+ for (j = required; j < available; j++) {
+ OggPlayDataHeader *header;
+
+ header = oggplay_callback_info_get_record(info, i, j);
+ overrun += oggplay_callback_info_get_record_size(header);
+
+ }
-
if (overrun > overruns[i].worst_overrun) {
int j;
overruns[i].histogram = realloc (overruns[i].histogram,
@@ -109,16 +120,34 @@
for (i = 0; i < oggplay_get_num_tracks (player); i++) {
int j;
- int mse = 0;
+ long long mse = 0;
double average = (double)(overruns[i].overrun_sum)/n_frames;
-
+ double hist_bucket_size = overruns[i].worst_overrun/20.0;
+ double cur_bucket;
+
printf("track %d\n", i);
printf("\tworst overrun: %d\n", overruns[i].worst_overrun);
printf("\taverage overrun: %f\n", average);
+ printf("\thistogram bucket size: %f\n", hist_bucket_size);
printf("\thistogram:");
+
+ for
+ (
+ cur_bucket = 0;
+ cur_bucket < overruns[i].worst_overrun;
+ cur_bucket +=hist_bucket_size
+ ) {
+ int sum = 0;
+ //printf(" (%f-%f)", cur_bucket, cur_bucket + hist_bucket_size);
+ for (j = ceil(cur_bucket); j < cur_bucket + hist_bucket_size; j++) {
+ sum += overruns[i].histogram[j];
+ }
+ printf(" %d", sum);
+ }
+
for (j = 0; j <= overruns[i].worst_overrun; j++) {
- printf(" %d", overruns[i].histogram[j]);
+ //printf(" %d", overruns[i].histogram[j]);
mse += (average - j) * (average - j) * overruns[i].histogram[j];
}
printf("\n");
--
shans
More information about the cvs-annodex
mailing list