Skip to content

Commit

Permalink
Merge pull request #29 from CarlFK/uvc-raw
Browse files Browse the repository at this point in the history
Support raw-video UVC capture devices
  • Loading branch information
CarlFK authored Jul 21, 2023
2 parents f632af4 + f1496cc commit dffa417
Showing 1 changed file with 24 additions and 7 deletions.
31 changes: 24 additions & 7 deletions ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,25 @@ def mk_video_src(args, videocaps):
decodebin !
"""

elif args.video_source == 'hdmi2usb':
# https://hdmi2usb.tv
# Note: this code works with 720p
elif args.video_source in ('hdmi2usb', 'uvc-mjpeg'):
video_src = """
v4l2src {attribs} name=videosrc !
"""
video_src += """
queue max-size-time=4000000000 !
image/jpeg,width=1280,height=720 !
image/jpeg,{caps} !
jpegdec !
"""
""".format(caps=extract_caps(videocaps))

elif args.video_source == 'uvc-raw':

video_src = """
v4l2src {attribs} name=videosrc !
"""
video_src += """
video/x-raw,{caps} !
""".format(
caps=extract_caps(videocaps))

elif args.video_source == 'ximage':
# startx=0 starty=0 endx=1919 endy=1079 !
Expand Down Expand Up @@ -210,6 +220,13 @@ def mk_audio_src(args, audiocaps):
return audio_src


def extract_caps(videocaps, caps=("width", "height")):
"""Filter out caps (list of keys) from a videocaps strings"""
parts = videocaps.split(',')
filtered = [cap for cap in parts if cap.split('=')[0] in caps]
return ','.join(filtered)


def mk_client(core_ip, port):

client = "tcpclientsink host={host} port={port}".format(
Expand Down Expand Up @@ -387,8 +404,8 @@ def get_args():
parser.add_argument(
'--video-source', action='store',
choices=[
'dv', 'hdv', 'udp_h264', 'hdmi2usb', 'blackmagic',
'ximage', 'png', 'file', 'rtmp', 'test', 'spacescope'],
'dv', 'hdv', 'udp_h264', 'hdmi2usb', 'uvc-mjpeg', 'uvc-raw',
'blackmagic', 'ximage', 'png', 'file', 'rtmp', 'test', 'spacescope'],
default='test',
help="Where to get video from")

Expand Down

0 comments on commit dffa417

Please sign in to comment.