mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-03 14:08:56 +00:00
Fixed some leftover fixes
Original commit message from CVS: Fixed some leftover fixes
This commit is contained in:
parent
35e50facf7
commit
cdb004a722
4 changed files with 76 additions and 86 deletions
|
@ -266,81 +266,78 @@ gst_dvdec_loop (GstElement *element)
|
||||||
|
|
||||||
dvdec = GST_DVDEC (element);
|
dvdec = GST_DVDEC (element);
|
||||||
|
|
||||||
do {
|
// grab an input frame
|
||||||
// grab an input frame
|
needed = BUFFER;
|
||||||
needed = BUFFER;
|
if (dvdec->remaining > 0) {
|
||||||
if (dvdec->remaining > 0) {
|
memcpy(&dvdec->inframe[BUFFER-needed],
|
||||||
memcpy(&dvdec->inframe[BUFFER-needed],
|
GST_BUFFER_DATA(dvdec->carryover)+(GST_BUFFER_SIZE(dvdec->carryover)-dvdec->remaining),
|
||||||
GST_BUFFER_DATA(dvdec->carryover)+(GST_BUFFER_SIZE(dvdec->carryover)-dvdec->remaining),
|
dvdec->remaining);
|
||||||
dvdec->remaining);
|
dvdec->remaining = 0;
|
||||||
dvdec->remaining = 0;
|
gst_buffer_unref(dvdec->carryover);
|
||||||
gst_buffer_unref(dvdec->carryover);
|
}
|
||||||
}
|
while (needed) {
|
||||||
while (needed) {
|
buf = gst_pad_pull(dvdec->sinkpad);
|
||||||
buf = gst_pad_pull(dvdec->sinkpad);
|
if (needed < GST_BUFFER_SIZE(buf)) {
|
||||||
if (needed < GST_BUFFER_SIZE(buf)) {
|
memcpy(&dvdec->inframe[BUFFER-needed],GST_BUFFER_DATA(buf),needed);
|
||||||
memcpy(&dvdec->inframe[BUFFER-needed],GST_BUFFER_DATA(buf),needed);
|
/**** NOTE: this is done because 1394src doesn't allow buffers to outlive the handler *****/
|
||||||
/***** NOTE: this is done because 1394src doesn't allow buffers to outlive the handler *****/
|
dvdec->carryover = gst_buffer_copy(buf);
|
||||||
dvdec->carryover = gst_buffer_copy(buf);
|
dvdec->remaining = GST_BUFFER_SIZE(buf) - needed;
|
||||||
dvdec->remaining = GST_BUFFER_SIZE(buf) - needed;
|
needed = 0;
|
||||||
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);
|
|
||||||
} else {
|
} 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;
|
if (!GST_PAD_CAPS (dvdec->videosrcpad)) {
|
||||||
outframe_ptrs[1] = outframe_ptrs[0] + 720*HEIGHT;
|
gst_pad_set_caps (dvdec->videosrcpad, gst_pad_get_padtemplate_caps (dvdec->videosrcpad));
|
||||||
outframe_ptrs[2] = outframe_ptrs[1] + 360*HEIGHT;
|
}
|
||||||
|
|
||||||
|
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
|
#ifdef RGB
|
||||||
outframe_pitches[0] = 720*3;
|
GST_BUFFER_SIZE(buf) = (720*HEIGHT)*3;
|
||||||
#else
|
#else
|
||||||
outframe_pitches[0] = 720*2; // huh?
|
GST_BUFFER_SIZE(buf) = (720*HEIGHT)*2;
|
||||||
#endif
|
#endif
|
||||||
outframe_pitches[1] = HEIGHT/2;
|
GST_BUFFER_DATA(buf) = g_malloc(GST_BUFFER_SIZE(buf));
|
||||||
outframe_pitches[2] = HEIGHT/2;
|
outframe = GST_BUFFER_DATA(buf);
|
||||||
|
} else {
|
||||||
|
outframe = GST_BUFFER_DATA (buf);
|
||||||
|
}
|
||||||
|
|
||||||
// now we start decoding the frame
|
outframe_ptrs[0] = outframe;
|
||||||
dv_parse_header(dvdec->decoder,dvdec->inframe);
|
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
|
#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
|
#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
|
#endif
|
||||||
|
|
||||||
gst_pad_push(dvdec->videosrcpad,buf);
|
gst_pad_push(dvdec->videosrcpad,buf);
|
||||||
|
|
||||||
} while (!GST_ELEMENT_IS_COTHREAD_STOPPING (element));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -242,9 +242,6 @@ gst_flacdec_loop (GstElement *element)
|
||||||
FLAC__stream_decoder_process_metadata (flacdec->decoder);
|
FLAC__stream_decoder_process_metadata (flacdec->decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
FLAC__stream_decoder_process_one_frame (flacdec->decoder);
|
||||||
FLAC__stream_decoder_process_one_frame (flacdec->decoder);
|
|
||||||
}
|
|
||||||
while (!GST_ELEMENT_IS_COTHREAD_STOPPING (element));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -640,26 +640,23 @@ gst_ladspa_loop (GstElement *element)
|
||||||
LADSPA_Descriptor *desc;
|
LADSPA_Descriptor *desc;
|
||||||
|
|
||||||
desc = ladspa->descriptor;
|
desc = ladspa->descriptor;
|
||||||
do {
|
printf("looping something\n");
|
||||||
printf("looping something\n");
|
|
||||||
|
|
||||||
// first get all the necessary data from the input ports
|
// first get all the necessary data from the input ports
|
||||||
for (i=0;i<oclass->numsinkpads;i++){
|
for (i=0;i<oclass->numsinkpads;i++){
|
||||||
ladspa->buffers[i] = gst_pad_pull(ladspa->sinkpads[i]);
|
ladspa->buffers[i] = gst_pad_pull(ladspa->sinkpads[i]);
|
||||||
printf("pulling buffer %d\n", 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]));
|
// desc->connect_port(ladspa->handle,i,&(ladspa->controls[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0;i<oclass->numsrcpads && i<oclass->numsinkpads;i++){
|
for (i=0;i<oclass->numsrcpads && i<oclass->numsinkpads;i++){
|
||||||
printf("pushing buffer %d\n", i);
|
printf("pushing buffer %d\n", i);
|
||||||
gst_pad_push (ladspa->srcpads[i], ladspa->buffers[i]);
|
gst_pad_push (ladspa->srcpads[i], ladspa->buffers[i]);
|
||||||
ladspa->buffers[i] = NULL;
|
ladspa->buffers[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
} while (!GST_ELEMENT_IS_COTHREAD_STOPPING (element));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -407,9 +407,8 @@ gst_mikmod_loop (GstElement *element)
|
||||||
do {
|
do {
|
||||||
if ( Player_Active() )
|
if ( Player_Active() )
|
||||||
drv_gst.Update();
|
drv_gst.Update();
|
||||||
|
|
||||||
if (GST_ELEMENT_IS_COTHREAD_STOPPING (element))
|
gst_element_yield (element);
|
||||||
cothread_switch(cothread_current_main());
|
|
||||||
}
|
}
|
||||||
while ( 1 );
|
while ( 1 );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue