Mercurial > mplayer.hg
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;