Digital TV tuners (DVB-C/T/S) support in ESP32
Posted: Thu Jan 17, 2019 9:33 pm
Hi,
I am planning to add a Digital TV tuners (DVB) support to the ESP32.
This job may be split in two parts:
1) Tuner-demodulator control using a I2C - It is a trivial task.
2) Transport Stream (TS) capture and demultiplexing. This is the hardest part.
For better understanding, let me put here some background info about the TS.
Usually, the transport stream coming from the tuner-demodulator is a serial bit-stream with a bit rate about 160 Mbps. The transport stream consists of packets. Each packet is 188-byte length.
Each packet starts with a sync byte (0x47) and has a Packet ID (PID) field (13 bit) inside a standard header. Packets with the same PID will form the elementary stream called PES.
The principal objective of the capture task is to store packets with the same PID in the dedicated memory fifo buffer. Thus we will create a PES stream for further processing.
The number of PES and corresponding PIDs should be configured by user. All others packets should be dropped.
So, my questions are:
Does anyone have experience in this matter?
Could someone else share any ideas about such task and how it could be implemented
in esp32 hardware interfaces and DMA?
Thank you for your time.
I am planning to add a Digital TV tuners (DVB) support to the ESP32.
This job may be split in two parts:
1) Tuner-demodulator control using a I2C - It is a trivial task.
2) Transport Stream (TS) capture and demultiplexing. This is the hardest part.
For better understanding, let me put here some background info about the TS.
Usually, the transport stream coming from the tuner-demodulator is a serial bit-stream with a bit rate about 160 Mbps. The transport stream consists of packets. Each packet is 188-byte length.
Each packet starts with a sync byte (0x47) and has a Packet ID (PID) field (13 bit) inside a standard header. Packets with the same PID will form the elementary stream called PES.
The principal objective of the capture task is to store packets with the same PID in the dedicated memory fifo buffer. Thus we will create a PES stream for further processing.
The number of PES and corresponding PIDs should be configured by user. All others packets should be dropped.
So, my questions are:
Does anyone have experience in this matter?
Could someone else share any ideas about such task and how it could be implemented
in esp32 hardware interfaces and DMA?
Thank you for your time.