changeset 26690:8aaa8fadc36c

Replace a really ugly hack by a clean but not thread safe solution. (no threads so no problem anyway ...) This fixes the segfault with lavf muxing.
author michael
date Sat, 10 May 2008 17:19:18 +0000
parents 4cf30c0ca561
children e456af9908f8
files libmpdemux/muxer_lavf.c
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/muxer_lavf.c	Sat May 10 15:03:04 2008 +0000
+++ b/libmpdemux/muxer_lavf.c	Sat May 10 17:19:18 2008 +0000
@@ -61,8 +61,14 @@
 	{NULL, NULL, 0, 0, 0, 0, NULL}
 };
 
+static muxer_t *priv_data; // This should be transmitted to mp_open() through the filename
+                           // when thread saftey is needed but mplayer == no threads and
+                           // especially not multiple muxers being inited at once so theres
+                           // no point in the extra complexity, a static is simpler.
+
 static int mp_open(URLContext *h, const char *filename, int flags)
 {
+        h->priv_data= priv_data;
 	return 0;
 }
 
@@ -388,14 +394,13 @@
             av_strlcpy(priv->oc->comment  , info_comment,   sizeof(priv->oc->comment  ));
 	register_protocol(&mp_protocol);
 
+        priv_data= muxer;
 	if(url_fopen(&priv->oc->pb, mp_filename, URL_WRONLY))
 	{
 		mp_msg(MSGT_MUXER, MSGL_FATAL, "Could not open outfile\n");
 		goto fail;
         }
 	
-	((URLContext*)(priv->oc->pb->opaque))->priv_data= muxer;
-	
 	muxer->priv = (void *) priv;
 	muxer->cont_new_stream = &lavf_new_stream;
 	muxer->cont_write_chunk = &write_chunk;