sndplay: support various input kinds
[nihav-player.git] / sndplay / src / allreg.rs
index d0c6b394192103bcee48fca37d6ce3a4c2c14116..a2a4df64810ba90c529f3c72f086dd6b9725b31b 100644 (file)
@@ -1,11 +1,14 @@
-use nihav_core::codecs::RegisteredDecoders;
-use nihav_core::demuxers::RegisteredDemuxers;
+use nihav_core::codecs::{RegisteredDecoders, RegisteredPacketisers};
+use nihav_core::demuxers::{RegisteredDemuxers, RegisteredRawDemuxers};
 
 use nihav_commonfmt::generic_register_all_decoders;
 use nihav_commonfmt::generic_register_all_demuxers;
 
 use nihav_duck::duck_register_all_decoders;
 
+use nihav_flash::flash_register_all_decoders;
+use nihav_flash::flash_register_all_demuxers;
+
 use nihav_game::game_register_all_decoders;
 use nihav_game::game_register_all_demuxers;
 
@@ -14,6 +17,9 @@ use nihav_indeo::indeo_register_all_decoders;
 use nihav_llaudio::llaudio_register_all_decoders;
 use nihav_llaudio::llaudio_register_all_demuxers;
 
+use nihav_mpeg::mpeg_register_all_decoders;
+use nihav_mpeg::mpeg_register_all_packetisers;
+
 use nihav_ms::ms_register_all_decoders;
 
 use nihav_qt::qt_register_all_decoders;
@@ -27,12 +33,14 @@ use nihav_realmedia::realmedia_register_all_demuxers;
 use nihav_vivo::vivo_register_all_decoders;
 use nihav_vivo::vivo_register_all_demuxers;
 
-pub fn register_all_decoders(rd: &mut RegisteredDecoders) {
+fn register_all_decoders(rd: &mut RegisteredDecoders) {
     generic_register_all_decoders(rd);
     duck_register_all_decoders(rd);
+    flash_register_all_decoders(rd);
     game_register_all_decoders(rd);
     indeo_register_all_decoders(rd);
     llaudio_register_all_decoders(rd);
+    mpeg_register_all_decoders(rd);
     ms_register_all_decoders(rd);
     qt_register_all_decoders(rd);
     rad_register_all_decoders(rd);
@@ -40,8 +48,13 @@ pub fn register_all_decoders(rd: &mut RegisteredDecoders) {
     vivo_register_all_decoders(rd);
 }
 
-pub fn register_all_demuxers(rd: &mut RegisteredDemuxers) {
+fn register_all_packetisers(rp: &mut RegisteredPacketisers) {
+    mpeg_register_all_packetisers(rp);
+}
+
+fn register_all_demuxers(rd: &mut RegisteredDemuxers) {
     generic_register_all_demuxers(rd);
+    flash_register_all_demuxers(rd);
     game_register_all_demuxers(rd);
     llaudio_register_all_demuxers(rd);
     rad_register_all_demuxers(rd);
@@ -49,3 +62,29 @@ pub fn register_all_demuxers(rd: &mut RegisteredDemuxers) {
     vivo_register_all_demuxers(rd);
 }
 
+fn register_all_raw_demuxers(_rd: &mut RegisteredRawDemuxers) {
+    //llaudio_register_all_raw_demuxers(rd);
+}
+
+
+pub struct FullRegister {
+    pub dmx_reg:    RegisteredDemuxers,
+    pub rdmx_reg:   RegisteredRawDemuxers,
+    pub pkt_reg:    RegisteredPacketisers,
+    pub dec_reg:    RegisteredDecoders,
+}
+
+impl FullRegister {
+    pub fn new() -> Self {
+        let mut dmx_reg = RegisteredDemuxers::new();
+        register_all_demuxers(&mut dmx_reg);
+        let mut rdmx_reg = RegisteredRawDemuxers::new();
+        register_all_raw_demuxers(&mut rdmx_reg);
+        let mut dec_reg = RegisteredDecoders::new();
+        register_all_decoders(&mut dec_reg);
+        let mut pkt_reg = RegisteredPacketisers::new();
+        register_all_packetisers(&mut pkt_reg);
+        Self { dmx_reg, rdmx_reg, pkt_reg, dec_reg }
+    }
+}
+