From: "Daniel W. S. Almeida" <dwlsalme...@gmail.com>

This series is work in progress. It represents the current work done on a
virtual DVB driver for the Linux media subsystem. I am new to the media
subsystem and to kernel development in general.

This series currently adds:
-fake tuner, demodulator and bridge drivers
-a PSI generator
-a PES/TS packetizer
-a SMPTE 302m encoder, capable of encoding AES3 audio into MPEG TS
-a barebones TS mux abstraction

I appreciate any feedback!

Changes in v4:
        Added a PES packetizer
        Implemented a minimum version of the SMPTE 302m encoder for AES3 audio
        Fixed endianness in the PSI generator, converting fields to big endian 
where applicable
        Added a minimal TS mux abstraction

Changes in v3:
        Added a bridge driver
        Renamed the driver to vidtv
        Renamed/reworked commits into smaller pieces
        Moved the driver into its own directory
        Fixed the code for the signal strength in the tuner
        Removed useless enums in the tuner driver (e.g. lock_status, 
power_status...)
        Reworked the logic for the poll_snr thread in the demodulator driver
        Moved MPEG related code to the bridge driver, as it controls the demux 
logic
        Changed literals to #defines, used sizeof in place of integer literals 
when
        computing the size of PSI structs
        Moved the MPEG PSI tables to the heap to reduce stack space usage
        Now using usleep_range in place of msleep_interruptible in the MPEG TS 
thread
        Wrapped memcpy and memset to protect against buffer overflow when 
writing to the
        MPEG TS buffer.

Changes in v2:
        Attempted not to break assignments into multiple lines as much as 
possible.
        Code now passes checkpatch strict mode

        media: dvb_dummy_tuner: implement driver skeleton       
                Changed snr values to mili db
                Return value from 0-100 to indicate how far off the requested
                frequency is from a valid one

                Use the frequency shift to interpolate between 34dB and 10dB if
                we can not match against the SNR lookup table
                Remove sleep calls for suspend/resume

                Fix memcpy call for the config struct

        media: dvb_dummy_fe.c: lose TS lock on bad snr
                Randomly recover the TS lock if the signal quality improves
                                
        media: dvb_dummy_fe.c: write PSI information into DMX buffer
                Split the patch into multiple header/source files

                Hexadecimal literals are now lower case

                Prefer short function names / reduce function signatures

                Add #defines for constants when computing section lengths

                Change signature for functions that take a dummy channel as
                argument (i.e. channels* is now channels[NUM_CHANNELS])


Daniel W. S. Almeida (11):
  media: vidtv: add Kconfig entry
  media: vidtv: implement a tuner driver
  media: vidtv: implement a demodulator driver
  media: vidtv: move config structs into a separate header
  media: vidtv: add a bridge driver
  media: vidtv: add wrappers for memcpy and memset
  media: vidtv: add MPEG TS common code
  media: vidtv: implement a PSI generator
  media: vidtv: implement a PES packetizer
  media: vidtv: Implement a SMPTE 302M encoder
  media: vidtv: Add a MPEG Transport Stream Multiplexer

 drivers/media/test-drivers/Kconfig            |   10 +
 drivers/media/test-drivers/Makefile           |    1 +
 drivers/media/test-drivers/vidtv/Kconfig      |   11 +
 drivers/media/test-drivers/vidtv/Makefile     |    7 +
 .../media/test-drivers/vidtv/vidtv_bridge.c   |  442 +++++++
 .../media/test-drivers/vidtv/vidtv_bridge.h   |   39 +
 .../media/test-drivers/vidtv/vidtv_channel.c  |  326 +++++
 .../media/test-drivers/vidtv/vidtv_channel.h  |   66 +
 .../media/test-drivers/vidtv/vidtv_common.c   |   51 +
 .../media/test-drivers/vidtv/vidtv_common.h   |   35 +
 .../media/test-drivers/vidtv/vidtv_config.h   |   35 +
 .../media/test-drivers/vidtv/vidtv_demod.c    |  494 +++++++
 .../media/test-drivers/vidtv/vidtv_demod.h    |   34 +
 .../media/test-drivers/vidtv/vidtv_encoder.h  |  103 ++
 drivers/media/test-drivers/vidtv/vidtv_mux.c  |  423 ++++++
 drivers/media/test-drivers/vidtv/vidtv_mux.h  |  105 ++
 drivers/media/test-drivers/vidtv/vidtv_pes.c  |  429 ++++++
 drivers/media/test-drivers/vidtv/vidtv_pes.h  |  185 +++
 drivers/media/test-drivers/vidtv/vidtv_psi.c  | 1155 +++++++++++++++++
 drivers/media/test-drivers/vidtv/vidtv_psi.h  |  362 ++++++
 .../media/test-drivers/vidtv/vidtv_s302m.c    |  608 +++++++++
 .../media/test-drivers/vidtv/vidtv_s302m.h    |   99 ++
 drivers/media/test-drivers/vidtv/vidtv_ts.c   |  130 ++
 drivers/media/test-drivers/vidtv/vidtv_ts.h   |  103 ++
 .../media/test-drivers/vidtv/vidtv_tuner.c    |  403 ++++++
 25 files changed, 5656 insertions(+)
 create mode 100644 drivers/media/test-drivers/vidtv/Kconfig
 create mode 100644 drivers/media/test-drivers/vidtv/Makefile
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_bridge.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_bridge.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_channel.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_channel.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_common.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_common.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_config.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_demod.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_demod.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_encoder.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_mux.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_mux.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_pes.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_pes.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_psi.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_psi.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_s302m.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_s302m.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_ts.c
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_ts.h
 create mode 100644 drivers/media/test-drivers/vidtv/vidtv_tuner.c

-- 
2.26.2

Reply via email to