[vlc-commits] demux: adaptative: change fmt compatibility checks
Francois Cartegnie
git at videolan.org
Fri Oct 9 15:56:21 CEST 2015
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Oct 9 15:46:49 2015 +0200| [8611385b2ab746fd74c2ee34941ac86fd1070370] | committer: Francois Cartegnie
demux: adaptative: change fmt compatibility checks
nal based codecs should be able to restart by themselves.
aac needs rate checking wich isn't specified by demuxer
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8611385b2ab746fd74c2ee34941ac86fd1070370
---
modules/demux/adaptative/plumbing/FakeESOutID.cpp | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/modules/demux/adaptative/plumbing/FakeESOutID.cpp b/modules/demux/adaptative/plumbing/FakeESOutID.cpp
index 5121123..ec2313ec 100644
--- a/modules/demux/adaptative/plumbing/FakeESOutID.cpp
+++ b/modules/demux/adaptative/plumbing/FakeESOutID.cpp
@@ -68,9 +68,24 @@ const es_format_t *FakeESOutID::getFmt() const
bool FakeESOutID::isCompatible( const FakeESOutID *p_other ) const
{
- return es_format_IsSimilar( &p_other->fmt, &fmt ) &&
- p_other->fmt.i_extra == fmt.i_extra &&
- (p_other->fmt.i_extra == 0 || !memcmp( p_other->fmt.p_extra, fmt.p_extra, fmt.i_extra ));
+ switch(fmt.i_codec)
+ {
+ case VLC_CODEC_H264:
+ case VLC_CODEC_HEVC:
+ case VLC_CODEC_VC1:
+ return true;
+
+ default:
+ if(fmt.i_cat == AUDIO_ES)
+ {
+ /* Reject audio streams with different or unknown rates */
+ if(fmt.audio.i_rate != p_other->fmt.audio.i_rate || !fmt.audio.i_rate)
+ return false;
+ }
+
+ return es_format_IsSimilar( &p_other->fmt, &fmt ) &&
+ !p_other->fmt.i_extra && !fmt.i_extra;
+ }
}
void FakeESOutID::setScheduledForDeletion()
More information about the vlc-commits
mailing list