Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.24 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.24 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DAB+ Usb-Stick
#31
(13.07.2018, 06:12)Der kleine Punky schrieb: @sundtek
Hätte auch Interesse am Stick. Aber ich benutze keine Kodi sondern C++ vielleicht hilft das.

Die Tuner sind ja eh bestellbar, Versand ist ab Anfang nächster Woche.

net_open -> open
net_close -> close
net_ioctl -> ioctl

Sicherer ist aber net_* und dann gegen /opt/bin/libmcsimple.so zu linken, dann funktioniert der Code auch unter MacOSX oder über JNI unter Android (oder sobald unser Windows Compatibility Layer mal freigegeben wird auch unter Windows).

DAB Client code:

Parameter:
device ... Gerätepfad
devfd ... Filehandle vom Tuner
running ... sollte -1 sein


Code:
int media_scan_dabfrequencies(char *device, int devfd, int console, int running) {
        int fd;
        int nlen;
        char tmp[30];
        if (devfd>=0)
                fd = devfd;
        else
                fd = net_open(device, O_RDWR);

        if (fd>=0) {
                struct dab_frequency dabf;
                struct dab_tuner dabt;
                int i;
                int e;
                int current_scan_index=-1;
                struct dab_scan_setup setup;
                struct dab_scan_parameters parameters;
                memset(&parameters, 0x0, sizeof(struct dab_scan_parameters));
                memset(&setup, 0x0, sizeof(struct dab_scan_setup));
                net_ioctl(fd, DAB_SCAN_SETUP, &setup);

                do {
                        net_ioctl(fd, DAB_SCAN_NEXT_FREQUENCY, &parameters);
                        if (current_scan_index != parameters.scan_index) {
                                if (console>=0) {
                                        sprintf(tmp, "%s %d\n", dab_frequency_list[parameters.scan_index].channel, dab_frequency_list[parameters.scan_index].freq*1000);
                                        write(console, tmp, nlen);
                                } else {
                                        fprintf(stdout, "%s %d\n", dab_frequency_list[parameters.scan_index].channel, dab_frequency_list[parameters.scan_index].freq*1000);
                                        fflush(stdout);
                                }
                        }

                        switch(parameters.status) {
                        case DAB_SCAN_LOCKED:
                        {
                                if (console>=0) {
                                        write(console, "[LOCKED]\n", 9);
                                } else {
                                        fprintf(stdout, "[LOCKED]\n");
                                }
                                break;
                        }
                        case DAB_SCAN_SEARCHING:
                                usleep(10000);
                                break;
                        case DAB_SCAN_COMPLETE:
                        {
                                if (console>=0) {
                                        write(console, "[FINISHED]\n", 11);
                                } else {
                                        fprintf(stdout, "\nScan completed\n");
                                }
                                break;
                        }
                        }
                        current_scan_index = parameters.scan_index;
                        if (console>=0 && running == 0)
                                break;
                } while (parameters.status != DAB_SCAN_COMPLETE);

                if (devfd == -1)
                        net_close(fd);
        }
        return 0;
}


Scanne DAB Services (gibt SID Und Component ID zurück):
Code:
int media_scan_dabservices(char *device) {
        int fd;
        int rv;
        int i=0;
        fd = net_open(device, O_RDWR);
        if (fd>=0) {
                struct dab_service service;
                printf("Service Name, Service ID, Component ID\n");
                while(1) {
                        service.id=i++;
                        rv = net_ioctl(fd, DAB_GET_SERVICE, &service);
                        if (rv == -1)
                                break;
                        printf("%16s\t0x%x\t0x%x\n", service.service_name, service.sid, service.comp[0]);
                }
                net_close(fd);
        }
        return 0;
}


Sender konfigurieren:

Code:
int set_dab_channel(int fd, uint32_t frequency, uint32_t sid, uint8_t sid_set, uint32_t comp, uint8_t comp_set) {
        struct dab_frequency dabf;
        memset(&dabf, 0x0, sizeof(struct dab_frequency));
        if (sid_set && comp_set)
                printf("Tuning: %d, 0x%x, 0x%x\n", frequency, sid, comp);
        else if (sid_set)
                printf("Tuning: %d, 0x%x\n", frequency, sid);
        else
                printf("Tuning: %d\n", frequency);

        dabf.frequency = frequency;
        if (sid_set) {
                dabf.sid_set = 1;
                dabf.sid = sid;
        }
        if (comp_set) {
                dabf.comp = comp;
                dabf.comp_set = 1;
        }
        net_ioctl(fd, DAB_SET_FREQUENCY, &dabf);
        return 0;
}
Code:
int get_dab_lock(int fd) {
        int i=5;
        struct dab_tuner dabt;
        memset(&dabt, 0x0, sizeof(struct dab_tuner));
        for (i=0;i<10;i++) {
                net_ioctl(fd, DAB_GET_TUNER, &dabt);
                if (dabt.status & DAB_HAS_LOCK) {
                        printf("[LOCKED]");
                        break;
                } else {
                        printf(".");
                }
                usleep(10000);
        }
        printf("\n");
        return 0;
}


Folgende Funktion startet das Playback von Audio direkt im Treiber.
fd sollte der Filehandle zu /dev/dab0 sein (oder /dev/dabX bei mehreren Empfängern).


Code:
int set_mute(int fd, char *arg) {
        int type = 0;
        struct v4l2_control control;
        if (strcmp(arg, "off") == 0) {
                control.id = V4L2_CID_AUDIO_MUTE;
                control.value = 0;
                fprintf(stdout, "Enabling audiostream\n");
                net_ioctl(fd, VIDIOC_S_CTRL, &control);
        } else if (strcmp(arg, "on") == 0) {
                fprintf(stdout, "Disabling audiostream\n");
                control.id = V4L2_CID_AUDIO_MUTE;
                control.value = 1;
                net_ioctl(fd, VIDIOC_S_CTRL, &control);
        } else
                fprintf(stdout, "Wrong argument [%s] choose between on|off\n", arg);

        return 0;
}


Die PCM Samples kann man mittels read() von /dev/dab0 auslesen, by default Spielt ja der Treiber Audio ab, dieses Verhalten kann man auch ausschalten.
Eine Besonderheit hier ist dass die PCM Samples auch WAV Header beinhalten, wer keine WAV Header benötigt sollte die Samples von /dev/dsp0 auslesen.

Das war jetzt nur mal der DAB Bereich, FM Radio kann über /dev/radio0 ausgelesen und konfiguriert werden, wir halten uns hierbei an den offiziellen Video4Linux Standard.
Die DAB Schnittstelle ist eine Eigenentwicklung da Linux dafür keine offiziellen Schnittstellen hat.

Wer sich etwas mit der FM Radio Video4Linux API auskennt wird hier Ähnlichkeiten sehen. Die Befehle sind in /opt/include/mediacmds.h definiert.

Einfacher geht's über unseren Streamingserver "rtspd"

/opt/bin/mediaclient --installstreamer

dann im Web http://localhost:22000 die DAB Frequenzen scannen / Playlisten konfigurieren - und via HTTP streamen.
Das ist dann komplett unabhängig von jeder Spezial-API.
Zitieren


Nachrichten in diesem Thema
DAB+ Usb-Stick - von kami - 09.07.2018, 15:13
RE: DAB+ Usb-Stick - von frankie0815 - 09.07.2018, 15:37
DAB+ Usb-Stick - von Peziman - 10.07.2018, 05:42
RE: DAB+ Usb-Stick - von harryberlin - 10.07.2018, 06:00
RE: DAB+ Usb-Stick - von Jack - 10.07.2018, 09:57
RE: DAB+ Usb-Stick - von Viper - 10.07.2018, 10:28
RE: DAB+ Usb-Stick - von sundtek - 10.07.2018, 10:52
RE: DAB+ Usb-Stick - von Viper - 10.07.2018, 13:06
RE: DAB+ Usb-Stick - von sundtek - 10.07.2018, 14:26
RE: DAB+ Usb-Stick - von Viper - 10.07.2018, 15:13
RE: DAB+ Usb-Stick - von frankie0815 - 10.07.2018, 12:01
DAB+ Usb-Stick - von Peziman - 10.07.2018, 12:14
RE: DAB+ Usb-Stick - von frankie0815 - 10.07.2018, 13:07
RE: DAB+ Usb-Stick - von harryberlin - 10.07.2018, 13:08
RE: DAB+ Usb-Stick - von Viper - 10.07.2018, 13:26
RE: DAB+ Usb-Stick - von frankie0815 - 10.07.2018, 14:06
RE: DAB+ Usb-Stick - von sundtek - 10.07.2018, 15:16
RE: DAB+ Usb-Stick - von harryberlin - 10.07.2018, 18:12
RE: DAB+ Usb-Stick - von sundtek - 10.07.2018, 18:40
RE: DAB+ Usb-Stick - von frankie0815 - 10.07.2018, 18:56
RE: DAB+ Usb-Stick - von Jack - 10.07.2018, 19:12
RE: DAB+ Usb-Stick - von harryberlin - 10.07.2018, 20:00
RE: DAB+ Usb-Stick - von sundtek - 10.07.2018, 20:15
RE: DAB+ Usb-Stick - von Peziman - 11.07.2018, 08:43
RE: DAB+ Usb-Stick - von sundtek - 11.07.2018, 12:31
RE: DAB+ Usb-Stick - von Peziman - 11.07.2018, 13:29
RE: DAB+ Usb-Stick - von harryberlin - 11.07.2018, 16:17
RE: DAB+ Usb-Stick - von sundtek - 11.07.2018, 17:13
RE: DAB+ Usb-Stick - von harryberlin - 11.07.2018, 17:28
RE: DAB+ Usb-Stick - von Der kleine Punky - 13.07.2018, 06:12
RE: DAB+ Usb-Stick - von sundtek - 13.07.2018, 15:37
RE: DAB+ Usb-Stick - von harryberlin - 13.07.2018, 19:45
RE: DAB+ Usb-Stick - von sundtek - 13.07.2018, 21:30
RE: DAB+ Usb-Stick - von L4l3lu - 10.09.2018, 19:42
DAB+ Usb-Stick - von Peziman - 10.09.2018, 22:28
RE: DAB+ Usb-Stick - von frankie0815 - 11.09.2018, 05:34
DAB+ Usb-Stick - von Peziman - 11.09.2018, 07:36
RE: DAB+ Usb-Stick - von rAcHe kLoS - 11.09.2018, 14:36
RE: DAB+ Usb-Stick - von Viper - 13.09.2018, 08:51
RE: DAB+ Usb-Stick - von L4l3lu - 11.09.2018, 15:03
RE: DAB+ Usb-Stick - von Peziman - 11.09.2018, 15:15
RE: DAB+ Usb-Stick - von Peziman - 11.09.2018, 15:05
RE: DAB+ Usb-Stick - von L4l3lu - 11.09.2018, 15:13
RE: DAB+ Usb-Stick - von L4l3lu - 11.09.2018, 15:19
RE: DAB+ Usb-Stick - von Peziman - 11.09.2018, 15:28
RE: DAB+ Usb-Stick - von rAcHe kLoS - 13.09.2018, 10:48
RE: DAB+ Usb-Stick - von L4l3lu - 13.09.2018, 17:32
RE: DAB+ Usb-Stick - von rAcHe kLoS - 13.09.2018, 20:58
RE: DAB+ Usb-Stick - von Peziman - 14.09.2018, 12:32
RE: DAB+ Usb-Stick - von Peziman - 02.10.2018, 17:36
RE: DAB+ Usb-Stick - von L4l3lu - 03.10.2018, 08:33
DAB+ Usb-Stick - von Peziman - 03.10.2018, 10:35
RE: DAB+ Usb-Stick - von Der kleine Punky - 04.10.2018, 05:48
DAB+ Usb-Stick - von Peziman - 04.10.2018, 06:47
RE: DAB+ Usb-Stick - von Der kleine Punky - 05.10.2018, 08:03
DAB+ Usb-Stick - von Peziman - 05.10.2018, 08:15
RE: DAB+ Usb-Stick - von Der kleine Punky - 06.10.2018, 06:59
RE: DAB+ Usb-Stick - von L4l3lu - 06.10.2018, 14:36
RE: DAB+ Usb-Stick - von Peziman - 07.10.2018, 17:11
RE: DAB+ Usb-Stick - von Der kleine Punky - 07.10.2018, 17:37
DAB+ Usb-Stick - von Peziman - 07.10.2018, 18:21
RE: DAB+ Usb-Stick - von Der kleine Punky - 07.10.2018, 18:50
RE: DAB+ Usb-Stick - von Peziman - 09.10.2018, 06:08
RE: DAB+ Usb-Stick - von Der kleine Punky - 09.10.2018, 06:34
DAB+ Usb-Stick - von Peziman - 09.10.2018, 10:07
RE: DAB+ Usb-Stick - von L4l3lu - 10.10.2018, 19:30
DAB+ Usb-Stick - von Peziman - 11.10.2018, 06:25
RE: DAB+ Usb-Stick - von L4l3lu - 11.10.2018, 06:46
DAB+ Usb-Stick - von Peziman - 11.10.2018, 07:41
RE: DAB+ Usb-Stick - von harryberlin - 11.10.2018, 17:24
DAB+ Usb-Stick - von Peziman - 12.10.2018, 11:17
RE: DAB+ Usb-Stick - von Der kleine Punky - 16.10.2018, 05:12
RE: DAB+ Usb-Stick - von L4l3lu - 16.10.2018, 21:10
RE: DAB+ Usb-Stick - von L4l3lu - 17.10.2018, 20:38
RE: DAB+ Usb-Stick - von darksides_166 - 07.12.2018, 16:29
DAB+ Usb-Stick - von Peziman - 07.12.2018, 16:31
RE: DAB+ Usb-Stick - von PokerOger - 01.02.2019, 00:52
RE: DAB+ Usb-Stick - von Viper - 04.02.2019, 15:32
DAB+ Usb-Stick - von Peziman - 04.02.2019, 23:28
RE: DAB+ Usb-Stick - von Jack - 04.02.2019, 23:45
RE: DAB+ Usb-Stick - von Viper - 05.02.2019, 09:00
RE: DAB+ Usb-Stick - von Peziman - 05.02.2019, 10:18
RE: DAB+ Usb-Stick - von Der kleine Punky - 26.02.2019, 09:12
RE: DAB+ Usb-Stick - von Viper - 05.04.2019, 08:51
DAB+ Usb-Stick - von Peziman - 26.02.2019, 09:14
DAB+ Usb-Stick - von Peziman - 05.04.2019, 11:42
RE: DAB+ Usb-Stick - von Der kleine Punky - 16.04.2019, 07:27
RE: DAB+ Usb-Stick - von Viper - 17.04.2019, 09:46
RE: DAB+ Usb-Stick - von gsfx - 06.05.2019, 08:38
RE: DAB+ Usb-Stick - von Viper - 06.05.2019, 09:51
RE: DAB+ Usb-Stick - von Jack - 06.05.2019, 10:01
RE: DAB+ Usb-Stick - von gsfx - 06.05.2019, 13:33
RE: DAB+ Usb-Stick - von Jack - 07.05.2019, 17:59
RE: DAB+ Usb-Stick - von Viper - 08.05.2019, 11:02
RE: DAB+ Usb-Stick - von PokerOger - 10.05.2019, 12:19
RE: DAB+ Usb-Stick - von gsfx - 22.05.2019, 06:43
RE: DAB+ Usb-Stick - von Jack - 22.05.2019, 08:52
RE: DAB+ Usb-Stick - von Viper - 23.05.2019, 12:30
RE: DAB+ Usb-Stick - von gsfx - 01.07.2019, 08:15
RE: DAB+ Usb-Stick - von Der kleine Punky - 26.07.2019, 08:10
RE: DAB+ Usb-Stick - von sundtek - 29.07.2019, 21:41
DAB+ Usb-Stick - von Peziman - 06.08.2019, 09:52
RE: DAB+ Usb-Stick - von Der kleine Punky - 07.08.2019, 07:16
DAB+ Usb-Stick - von Peziman - 07.08.2019, 09:33
RE: DAB+ Usb-Stick - von Der kleine Punky - 08.08.2019, 08:20
RE: DAB+ Usb-Stick - von sundtek - 12.08.2019, 01:48
RE: DAB+ Usb-Stick - von Der kleine Punky - 01.09.2019, 07:43
DAB+ Usb-Stick - von Peziman - 01.09.2019, 09:07
RE: DAB+ Usb-Stick - von Der kleine Punky - 03.09.2019, 13:41
RE: DAB+ Usb-Stick - von Peziman - 03.09.2019, 21:06
RE: DAB+ Usb-Stick - von Der kleine Punky - 07.09.2019, 08:34
DAB+ Usb-Stick - von Peziman - 07.09.2019, 11:06
RE: DAB+ Usb-Stick - von Der kleine Punky - 13.09.2019, 05:38
RE: DAB+ Usb-Stick - von gsfx - 18.10.2019, 08:28
RE: DAB+ Usb-Stick - von Der kleine Punky - 12.10.2019, 06:18
RE: DAB+ Usb-Stick - von Der kleine Punky - 01.11.2019, 08:41
RE: DAB+ Usb-Stick - von Matten - 30.01.2021, 22:09
RE: DAB+ Usb-Stick - von Jack - 30.01.2021, 23:26
RE: DAB+ Usb-Stick - von Der kleine Punky - 01.02.2021, 05:56
RE: DAB+ Usb-Stick - von Peziman - 08.02.2021, 10:15
RE: DAB+ Usb-Stick - von Der kleine Punky - 16.02.2021, 06:57
RE: DAB+ Usb-Stick - von Der kleine Punky - 17.02.2021, 17:08
RE: DAB+ Usb-Stick - von PokerOger - 22.02.2021, 19:15
RE: DAB+ Usb-Stick - von Der kleine Punky - 24.02.2021, 07:32
RE: DAB+ Usb-Stick - von PokerOger - 25.02.2021, 14:19
RE: DAB+ Usb-Stick - von Der kleine Punky - 26.02.2021, 07:38

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 32 Gast/Gäste
RasPiCarProjekt