summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2001-11-18 13:44:53 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2001-11-18 13:44:53 +0000
commitcf45a6df3ddbb900ca213cf300244cd017bc1d2c (patch)
tree3d2995ecfc239062f41b2dea4a40289476fb23ed
parent1dba676b89fc09963312acecfe8c367c9200a870 (diff)
downloadxine-lib-cf45a6df3ddbb900ca213cf300244cd017bc1d2c.tar.gz
xine-lib-cf45a6df3ddbb900ca213cf300244cd017bc1d2c.tar.bz2
small bugfixes
CVS patchset: 1067 CVS date: 2001/11/18 13:44:53
-rw-r--r--src/libw32dll/DirectShow/DS_AudioDecoder.c1
-rw-r--r--src/libw32dll/DirectShow/DS_Filter.c4
-rw-r--r--src/libw32dll/DirectShow/DS_VideoDecoder.c4
-rw-r--r--src/libw32dll/w32codec.c11
4 files changed, 12 insertions, 8 deletions
diff --git a/src/libw32dll/DirectShow/DS_AudioDecoder.c b/src/libw32dll/DirectShow/DS_AudioDecoder.c
index e7a72f220..41944dd09 100644
--- a/src/libw32dll/DirectShow/DS_AudioDecoder.c
+++ b/src/libw32dll/DirectShow/DS_AudioDecoder.c
@@ -63,6 +63,7 @@ DS_AudioDecoder * DS_AudioDecoder_Create(const CodecInfo * info, const WAVEFORMA
memset(&this->m_sDestType, 0, sizeof(this->m_sDestType));
this->m_sDestType.majortype=MEDIATYPE_Audio;
this->m_sDestType.subtype=MEDIASUBTYPE_PCM;
+ this->m_sDestType.subtype.f1=pWF->wFormatTag;
this->m_sDestType.formattype=FORMAT_WaveFormatEx;
this->m_sDestType.bFixedSizeSamples=1;
this->m_sDestType.bTemporalCompression=0;
diff --git a/src/libw32dll/DirectShow/DS_Filter.c b/src/libw32dll/DirectShow/DS_Filter.c
index b60e2be75..072e7d319 100644
--- a/src/libw32dll/DirectShow/DS_Filter.c
+++ b/src/libw32dll/DirectShow/DS_Filter.c
@@ -190,11 +190,9 @@ DS_Filter * DS_Filter_Create(const char* dllname, const GUID* id,
this->m_pDestType);
if (result)
{
- //printf("Tracking ACELP %d 0%x\n", result);
- printf("Error connecting to output pin\n");
+ printf("Error connecting to output pin (result = %x)\n",(int)result);
return NULL;
}
-
printf("Using DirectShow codec: %s\n", dllname);
this->m_iState = 1;
}
diff --git a/src/libw32dll/DirectShow/DS_VideoDecoder.c b/src/libw32dll/DirectShow/DS_VideoDecoder.c
index 6d4d5460e..91db9fc63 100644
--- a/src/libw32dll/DirectShow/DS_VideoDecoder.c
+++ b/src/libw32dll/DirectShow/DS_VideoDecoder.c
@@ -111,8 +111,8 @@ DS_VideoDecoder * DS_VideoDecoder_Create(CodecInfo * info, BITMAPINFOHEADER * f
this->m_sOurType.pbFormat = (char*)this->m_sVhdr;
this->m_sVhdr2 = (VIDEOINFOHEADER*)(malloc(sizeof(VIDEOINFOHEADER)+12));
- memcpy(this->m_sVhdr2, this->m_sVhdr, sizeof(VIDEOINFOHEADER)+12);
- //memset((char*)this->m_sVhdr2 + sizeof(VIDEOINFOHEADER), 0, 12);
+ memcpy(this->m_sVhdr2, this->m_sVhdr, sizeof(VIDEOINFOHEADER));
+ memset((char*)this->m_sVhdr2 + sizeof(VIDEOINFOHEADER), 0, 12);
this->m_sVhdr2->bmiHeader.biCompression = 0;
this->m_sVhdr2->bmiHeader.biBitCount = 24;
diff --git a/src/libw32dll/w32codec.c b/src/libw32dll/w32codec.c
index e51b575a7..c8e218d66 100644
--- a/src/libw32dll/w32codec.c
+++ b/src/libw32dll/w32codec.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: w32codec.c,v 1.48 2001/11/18 03:53:24 guenter Exp $
+ * $Id: w32codec.c,v 1.49 2001/11/18 13:44:53 miguelfreitas Exp $
*
* routines for using w32 codecs
* DirectShow support by Miguel Freitas (Nov/2001)
@@ -565,7 +565,9 @@ static void w32v_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
} else if (this->decoder_ok) {
/* printf ("w32codec: processing packet ...\n"); */
-
+ if( (int) buf->size <= 0 )
+ return;
+
if( this->size + buf->size > this->bufsize ) {
this->bufsize = this->size + buf->size;
printf("w32codec: increasing source buffer to %d to avoid overflow.\n",
@@ -708,7 +710,8 @@ static void w32v_close (video_decoder_t *this_gen) {
if ( !this->ds_driver ) {
} else {
- DS_VideoDecoder_Destroy(this->ds_dec);
+ if( this->ds_dec )
+ DS_VideoDecoder_Destroy(this->ds_dec);
}
if ( this->img_buffer ) {
@@ -1061,6 +1064,8 @@ static void w32a_decode_data (audio_decoder_t *this_gen, buf_element_t *buf) {
this->decoder_ok = w32a_init_audio (this, (WAVEFORMATEX *)buf->content, buf->type);
} else if (this->decoder_ok) {
+ if( (int)buf->size <= 0 )
+ return;
w32a_decode_audio (this, buf->content, buf->size,
buf->decoder_info[0]==2,