Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Displays an RTP/JPEG stream on a Smalltv-pro 240x240 LCD (>10fps)

License

NotificationsYou must be signed in to change notification settings

jo-m/netshlix

Repository files navigation

Demo

Displays an RTP/JPEG stream on aSmalltv-pro (240x240 px LCD).

The roll-your-own minimalRTP/JPEG stack also works on Linux and is fully tested and fuzzed.

Build and deploy

This is anESP-IDF 5 project.

source$IDF_PATH/export.shexport ESPPORT=/dev/ttyACM0# Configurationcp sdkconfig.defaults.ci sdkconfig.defaults# Now, change default config (e.g. WiFi credentials):idf.py menuconfigidf.py save-defconfig# Build/flash (see below for Pinout info)idf.py build flash# Lint/format./format.sh# Flash and monitoridf.py -p$ESPPORT build flash monitoridf.py -p$ESPPORT monitor# Send frames (`mtu` here means UDP payload size, not actual MTU).gst-launch-1.0 filesrc location=components/rtpjpeg/BigBuckBunny_320x180.mp4! decodebin \! videoconvert! videoscale! video/x-raw,width=240,height=240 \! jpegenc \! rtpjpegpay seqnum-offset=63000 mtu=1400 \! udpsink host=10.0.0.134 port=1234# With fps capped:gst-launch-1.0 filesrc location=components/rtpjpeg/BigBuckBunny_320x180.mp4! decodebin \! videorate!"video/x-raw,framerate=10/1"! videoconvert! videoscale! video/x-raw,width=240,height=240 \! jpegenc \! rtpjpegpay seqnum-offset=63000 mtu=1400 \! udpsink host=10.0.0.134 port=1234

C Conventions

  • Names:buf,sz,out
  • Sizes:ptrdiff_t
  • Objects:typedef struct X_t {} X_t,init_X(..., X_t *out),X_do(X_t *x, ...),X_destroy(X_t *x)

Notes

  • There is no WiFi provisioning - the credentials are configured via KConfig (SMALLTV_WIFI_SSID,SMALLTV_WIFI_PASSWORD) and compiled in.
  • After a timeout without frames arriving (FRAME_TIMEOUT_US), a test image will be shown on the screen.
  • Next to the two jitterbuffer and the JPEG data buffer to decode from, we do not have enough RAM to keep a display framebuffer.
  • Thus, there is a single pixel buffer which can hold only a fraction of the screen pixels.
  • Both LVGL and the JPEG decoder use this same buffer, rendering one stripe at a time, which is then sent to the display.
  • When frames are arriving, LVGL is deactivated by not callinglv_timer_handler().
  • We are not using the esp_jpeg component (or ROM decoder) because its API does not allow to receive decoded data block by block.

Hardware

Picture:https://github.com/GeekMagicClock/smalltv-pro/blob/main/images/img-smalltv-pro.jpg

  • ESP32-D0WD-V3 chip
  • Xtensa® dual-core 32-bit LX6 CPU
  • 448 KB of ROM
  • 520 KB of SRAM
  • 16 KB of RTCSRAM
  • 8 MB of Flash memory (SPI)

PINs on header (verified with multimeter, WROOM module pin number in parens):

  • 1 GND square
  • 2 TX (35)
  • 3 RX (34)
  • 4 3V3
  • 5 GPIO0 (25) - must be held low on reset
  • 6 RST (3)

To let the programmer automatically reset the board: Connect pad 1 (GND) to pad 5 (GPIO0).

About

Displays an RTP/JPEG stream on a Smalltv-pro 240x240 LCD (>10fps)

Topics

Resources

License

Stars

Watchers

Forks


[8]ページ先頭

©2009-2025 Movatter.jp