[vlc-commits] transcode: store fmt per id/track
Ilkka Ollakka
git at videolan.org
Fri May 23 14:08:05 CEST 2014
vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Fri May 23 15:03:41 2014 +0300| [a90263be45d912f0146d68cd2336a96fe2ba5aa8] | committer: Ilkka Ollakka
transcode: store fmt per id/track
This helps to keep filters etc if there is for example 2 different audio
tracks with different channel count etc.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a90263be45d912f0146d68cd2336a96fe2ba5aa8
---
modules/stream_out/transcode/audio.c | 8 ++++----
modules/stream_out/transcode/transcode.h | 10 +++++++---
modules/stream_out/transcode/video.c | 10 +++++-----
3 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c
index 67ff948..ab9dfec 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -83,8 +83,8 @@ static int transcode_audio_initialize_filters( sout_stream_t *p_stream, sout_str
id->p_decoder->p_module = NULL;
return VLC_EGENERIC;
}
- p_sys->fmt_audio.i_rate = fmt_last->i_rate;
- p_sys->fmt_audio.i_physical_channels = fmt_last->i_physical_channels;
+ id->fmt_audio.i_rate = fmt_last->i_rate;
+ id->fmt_audio.i_physical_channels = fmt_last->i_physical_channels;
return VLC_SUCCESS;
}
@@ -255,8 +255,8 @@ int transcode_audio_process( sout_stream_t *p_stream,
}
/* Check if audio format has changed, and filters need reinit */
- if( unlikely( ( id->p_decoder->fmt_out.audio.i_rate != p_sys->fmt_audio.i_rate ) ||
- ( id->p_decoder->fmt_out.audio.i_physical_channels != p_sys->fmt_audio.i_physical_channels ) ) )
+ if( unlikely( ( id->p_decoder->fmt_out.audio.i_rate != id->fmt_audio.i_rate ) ||
+ ( id->p_decoder->fmt_out.audio.i_physical_channels != id->fmt_audio.i_physical_channels ) ) )
{
msg_Info( p_stream, "Audio changed, trying to reinitialize filters" );
if( id->p_af_chain != NULL )
diff --git a/modules/stream_out/transcode/transcode.h b/modules/stream_out/transcode/transcode.h
index 61f8ef1..50c3d75 100644
--- a/modules/stream_out/transcode/transcode.h
+++ b/modules/stream_out/transcode/transcode.h
@@ -26,7 +26,6 @@ struct sout_stream_sys_t
/* Audio */
vlc_fourcc_t i_acodec; /* codec audio (0 if not transcode) */
- audio_sample_format_t fmt_audio;
char *psz_aenc;
char *psz_alang;
config_chain_t *p_audio_cfg;
@@ -38,7 +37,6 @@ struct sout_stream_sys_t
/* Video */
vlc_fourcc_t i_vcodec; /* codec video (0 if not transcode) */
- video_format_t fmt_input_video;
char *psz_venc;
config_chain_t *p_video_cfg;
int i_vbitrate;
@@ -93,8 +91,14 @@ struct sout_stream_id_sys_t
{
filter_chain_t *p_f_chain; /**< Video filters */
filter_chain_t *p_uf_chain; /**< User-specified video filters */
+ video_format_t fmt_input_video;
};
- struct aout_filters *p_af_chain; /**< Audio filters */
+ struct
+ {
+ struct aout_filters *p_af_chain; /**< Audio filters */
+ audio_format_t fmt_audio;
+ };
+
};
/* Encoder */
diff --git a/modules/stream_out/transcode/video.c b/modules/stream_out/transcode/video.c
index ca582d3..6f775dd 100644
--- a/modules/stream_out/transcode/video.c
+++ b/modules/stream_out/transcode/video.c
@@ -836,13 +836,13 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
if( unlikely (
id->p_encoder->p_module &&
- !video_format_IsSimilar( &p_sys->fmt_input_video, &id->p_decoder->fmt_out.video )
+ !video_format_IsSimilar( &id->fmt_input_video, &id->p_decoder->fmt_out.video )
)
)
{
msg_Info( p_stream, "aspect-ratio changed, reiniting. %i -> %i : %i -> %i.",
- p_sys->fmt_input_video.i_sar_num, id->p_decoder->fmt_out.video.i_sar_num,
- p_sys->fmt_input_video.i_sar_den, id->p_decoder->fmt_out.video.i_sar_den
+ id->fmt_input_video.i_sar_num, id->p_decoder->fmt_out.video.i_sar_num,
+ id->fmt_input_video.i_sar_den, id->p_decoder->fmt_out.video.i_sar_den
);
/* Close filters */
if( id->p_f_chain )
@@ -860,7 +860,7 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
transcode_video_filter_init( p_stream, id );
transcode_video_encoder_init( p_stream, id );
conversion_video_filter_append( id );
- memcpy( &p_sys->fmt_input_video, &id->p_decoder->fmt_out.video, sizeof(video_format_t));
+ memcpy( &id->fmt_input_video, &id->p_decoder->fmt_out.video, sizeof(video_format_t));
}
@@ -875,7 +875,7 @@ int transcode_video_process( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
transcode_video_filter_init( p_stream, id );
transcode_video_encoder_init( p_stream, id );
conversion_video_filter_append( id );
- memcpy( &p_sys->fmt_input_video, &id->p_decoder->fmt_out.video, sizeof(video_format_t));
+ memcpy( &id->fmt_input_video, &id->p_decoder->fmt_out.video, sizeof(video_format_t));
if( transcode_video_encoder_open( p_stream, id ) != VLC_SUCCESS )
{
More information about the vlc-commits
mailing list