Opened 9 years ago

#4709 new enhancement

Support mjpeg 4:2:2 encoding in rows of one block instead of two blocks

Reported by: Carl Eugen Hoyos Owned by:
Priority: wish Component: avcodec
Version: git-master Keywords: mjpeg rtp
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Sending FFmpeg-encoded 4:2:2 mjpeg is currently impossible because vsample[] is 2,2,2. RFC 2435 requires 4:2:2 mjpeg over rtp to be encoded with vsample[] 1,1,1.

$ ffmpeg -i fate-suite/lena.pnm -vcodec mjpeg -pix_fmt yuvj422p -f rtp rtp://127.0.0.1:5004
ffmpeg version N-73450-ge83ffb4 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      54. 28.100 / 54. 28.100
  libavcodec     56. 46.101 / 56. 46.101
  libavformat    56. 40.100 / 56. 40.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 20.100 /  5. 20.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, image2, from 'fate-suite/lena.pnm':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 39333 kb/s
    Stream #0:0: Video: ppm, rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
[swscaler @ 0x2636220] deprecated pixel format used, make sure you did set range correctly
Output #0, rtp, to 'rtp://127.0.0.1:5004':
  Metadata:
    encoder         : Lavf56.40.100
    Stream #0:0: Video: mjpeg, yuvj422p(pc), 256x256, q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.46.101 mjpeg
Stream mapping:
  Stream #0:0 -> #0:0 (ppm (native) -> mjpeg (native))
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 56.40.100
m=video 5004 RTP/AVP 26
b=AS:200

Press [q] to stop, [?] for help
[rtp @ 0x2641ce0] Only 1x1 chroma blocks are supported. Aborted!
frame=    1 fps=0.0 q=4.1 Lsize=       0kB time=00:00:00.04 bitrate=   5.6kbits/s
video:14kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Change History (0)

Note: See TracTickets for help on using tickets.