Fixed some leftover fixes

Original commit message from CVS:
Fixed some leftover fixes
This commit is contained in:
Wim Taymans 2001-12-23 23:00:59 +00:00
parent 35e50facf7
commit cdb004a722
4 changed files with 76 additions and 86 deletions

View file

@ -266,81 +266,78 @@ gst_dvdec_loop (GstElement *element)
dvdec = GST_DVDEC (element);
do {
// grab an input frame
needed = BUFFER;
if (dvdec->remaining > 0) {
memcpy(&dvdec->inframe[BUFFER-needed],
GST_BUFFER_DATA(dvdec->carryover)+(GST_BUFFER_SIZE(dvdec->carryover)-dvdec->remaining),
dvdec->remaining);
dvdec->remaining = 0;
gst_buffer_unref(dvdec->carryover);
}
while (needed) {
buf = gst_pad_pull(dvdec->sinkpad);
if (needed < GST_BUFFER_SIZE(buf)) {
memcpy(&dvdec->inframe[BUFFER-needed],GST_BUFFER_DATA(buf),needed);
/***** NOTE: this is done because 1394src doesn't allow buffers to outlive the handler *****/
dvdec->carryover = gst_buffer_copy(buf);
dvdec->remaining = GST_BUFFER_SIZE(buf) - needed;
needed = 0;
} else {
memcpy(&dvdec->inframe[BUFFER-needed],GST_BUFFER_DATA(buf),GST_BUFFER_SIZE(buf));
needed -= GST_BUFFER_SIZE(buf);
}
gst_buffer_unref(buf);
}
if (!GST_PAD_CAPS (dvdec->videosrcpad)) {
gst_pad_set_caps (dvdec->videosrcpad, gst_pad_get_padtemplate_caps (dvdec->videosrcpad));
}
if (!dvdec->pool) {
dvdec->pool = gst_pad_get_bufferpool (dvdec->videosrcpad);
}
buf = NULL;
if (dvdec->pool) {
buf = gst_buffer_new_from_pool (dvdec->pool, 0, 0);
}
if (!buf) {
// allocate an output frame
buf = gst_buffer_new();
#ifdef RGB
GST_BUFFER_SIZE(buf) = (720*HEIGHT)*3;
#else
GST_BUFFER_SIZE(buf) = (720*HEIGHT)*2;
#endif
GST_BUFFER_DATA(buf) = g_malloc(GST_BUFFER_SIZE(buf));
outframe = GST_BUFFER_DATA(buf);
// grab an input frame
needed = BUFFER;
if (dvdec->remaining > 0) {
memcpy(&dvdec->inframe[BUFFER-needed],
GST_BUFFER_DATA(dvdec->carryover)+(GST_BUFFER_SIZE(dvdec->carryover)-dvdec->remaining),
dvdec->remaining);
dvdec->remaining = 0;
gst_buffer_unref(dvdec->carryover);
}
while (needed) {
buf = gst_pad_pull(dvdec->sinkpad);
if (needed < GST_BUFFER_SIZE(buf)) {
memcpy(&dvdec->inframe[BUFFER-needed],GST_BUFFER_DATA(buf),needed);
/**** NOTE: this is done because 1394src doesn't allow buffers to outlive the handler *****/
dvdec->carryover = gst_buffer_copy(buf);
dvdec->remaining = GST_BUFFER_SIZE(buf) - needed;
needed = 0;
} else {
outframe = GST_BUFFER_DATA (buf);
memcpy(&dvdec->inframe[BUFFER-needed],GST_BUFFER_DATA(buf),GST_BUFFER_SIZE(buf));
needed -= GST_BUFFER_SIZE(buf);
}
gst_buffer_unref(buf);
}
outframe_ptrs[0] = outframe;
outframe_ptrs[1] = outframe_ptrs[0] + 720*HEIGHT;
outframe_ptrs[2] = outframe_ptrs[1] + 360*HEIGHT;
if (!GST_PAD_CAPS (dvdec->videosrcpad)) {
gst_pad_set_caps (dvdec->videosrcpad, gst_pad_get_padtemplate_caps (dvdec->videosrcpad));
}
if (!dvdec->pool) {
dvdec->pool = gst_pad_get_bufferpool (dvdec->videosrcpad);
}
buf = NULL;
if (dvdec->pool) {
buf = gst_buffer_new_from_pool (dvdec->pool, 0, 0);
}
if (!buf) {
// allocate an output frame
buf = gst_buffer_new();
#ifdef RGB
outframe_pitches[0] = 720*3;
GST_BUFFER_SIZE(buf) = (720*HEIGHT)*3;
#else
outframe_pitches[0] = 720*2; // huh?
GST_BUFFER_SIZE(buf) = (720*HEIGHT)*2;
#endif
outframe_pitches[1] = HEIGHT/2;
outframe_pitches[2] = HEIGHT/2;
GST_BUFFER_DATA(buf) = g_malloc(GST_BUFFER_SIZE(buf));
outframe = GST_BUFFER_DATA(buf);
} else {
outframe = GST_BUFFER_DATA (buf);
}
// now we start decoding the frame
dv_parse_header(dvdec->decoder,dvdec->inframe);
outframe_ptrs[0] = outframe;
outframe_ptrs[1] = outframe_ptrs[0] + 720*HEIGHT;
outframe_ptrs[2] = outframe_ptrs[1] + 360*HEIGHT;
#ifdef RGB
outframe_pitches[0] = 720*3;
#else
outframe_pitches[0] = 720*2; // huh?
#endif
outframe_pitches[1] = HEIGHT/2;
outframe_pitches[2] = HEIGHT/2;
// now we start decoding the frame
dv_parse_header(dvdec->decoder,dvdec->inframe);
#ifdef RGB
dv_decode_full_frame(dvdec->decoder,dvdec->inframe,e_dv_color_rgb,outframe_ptrs,outframe_pitches);
dv_decode_full_frame(dvdec->decoder,dvdec->inframe,e_dv_color_rgb,outframe_ptrs,outframe_pitches);
#else
dv_decode_full_frame(dvdec->decoder,dvdec->inframe,e_dv_color_yuv,outframe_ptrs,outframe_pitches);
dv_decode_full_frame(dvdec->decoder,dvdec->inframe,e_dv_color_yuv,outframe_ptrs,outframe_pitches);
#endif
gst_pad_push(dvdec->videosrcpad,buf);
} while (!GST_ELEMENT_IS_COTHREAD_STOPPING (element));
gst_pad_push(dvdec->videosrcpad,buf);
}

View file

@ -242,9 +242,6 @@ gst_flacdec_loop (GstElement *element)
FLAC__stream_decoder_process_metadata (flacdec->decoder);
}
do {
FLAC__stream_decoder_process_one_frame (flacdec->decoder);
}
while (!GST_ELEMENT_IS_COTHREAD_STOPPING (element));
FLAC__stream_decoder_process_one_frame (flacdec->decoder);
}

View file

@ -640,26 +640,23 @@ gst_ladspa_loop (GstElement *element)
LADSPA_Descriptor *desc;
desc = ladspa->descriptor;
do {
printf("looping something\n");
printf("looping something\n");
// first get all the necessary data from the input ports
for (i=0;i<oclass->numsinkpads;i++){
ladspa->buffers[i] = gst_pad_pull(ladspa->sinkpads[i]);
printf("pulling buffer %d\n", i);
}
// first get all the necessary data from the input ports
for (i=0;i<oclass->numsinkpads;i++){
ladspa->buffers[i] = gst_pad_pull(ladspa->sinkpads[i]);
printf("pulling buffer %d\n", i);
}
for (i=0;i<oclass->numsinkpads;i++) {
for (i=0;i<oclass->numsinkpads;i++) {
// desc->connect_port(ladspa->handle,i,&(ladspa->controls[i]));
}
}
for (i=0;i<oclass->numsrcpads && i<oclass->numsinkpads;i++){
printf("pushing buffer %d\n", i);
gst_pad_push (ladspa->srcpads[i], ladspa->buffers[i]);
ladspa->buffers[i] = NULL;
}
} while (!GST_ELEMENT_IS_COTHREAD_STOPPING (element));
for (i=0;i<oclass->numsrcpads && i<oclass->numsinkpads;i++){
printf("pushing buffer %d\n", i);
gst_pad_push (ladspa->srcpads[i], ladspa->buffers[i]);
ladspa->buffers[i] = NULL;
}
}
static void

View file

@ -407,9 +407,8 @@ gst_mikmod_loop (GstElement *element)
do {
if ( Player_Active() )
drv_gst.Update();
if (GST_ELEMENT_IS_COTHREAD_STOPPING (element))
cothread_switch(cothread_current_main());
gst_element_yield (element);
}
while ( 1 );
}