FFmpeg
alldevices.c
Go to the documentation of this file.
1 /*
2  * Register all the grabbing devices.
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #include "libavformat/internal.h"
22 #include "libavformat/mux.h"
23 #include "avdevice.h"
24 
25 /* devices */
26 extern const AVInputFormat ff_alsa_demuxer;
27 extern const FFOutputFormat ff_alsa_muxer;
31 extern const AVInputFormat ff_bktr_demuxer;
32 extern const FFOutputFormat ff_caca_muxer;
35 extern const AVInputFormat ff_dshow_demuxer;
36 extern const AVInputFormat ff_fbdev_demuxer;
37 extern const FFOutputFormat ff_fbdev_muxer;
40 extern const AVInputFormat ff_jack_demuxer;
42 extern const AVInputFormat ff_lavfi_demuxer;
43 extern const AVInputFormat ff_openal_demuxer;
44 extern const FFOutputFormat ff_opengl_muxer;
45 extern const AVInputFormat ff_oss_demuxer;
46 extern const FFOutputFormat ff_oss_muxer;
47 extern const AVInputFormat ff_pulse_demuxer;
48 extern const FFOutputFormat ff_pulse_muxer;
49 extern const FFOutputFormat ff_sdl2_muxer;
50 extern const AVInputFormat ff_sndio_demuxer;
51 extern const FFOutputFormat ff_sndio_muxer;
52 extern const AVInputFormat ff_v4l2_demuxer;
53 extern const FFOutputFormat ff_v4l2_muxer;
54 extern const AVInputFormat ff_vfwcap_demuxer;
56 extern const FFOutputFormat ff_xv_muxer;
57 
58 /* external libraries */
61 
62 #include "libavdevice/outdev_list.c"
63 #include "libavdevice/indev_list.c"
64 
66 {
67  avpriv_register_devices(outdev_list, indev_list);
68 }
69 
70 static const void *next_input(const AVInputFormat *prev, AVClassCategory c2)
71 {
72  const AVClass *pc;
75  const AVInputFormat *fmt = NULL;
76  int i = 0;
77 
78  while (prev && (fmt = indev_list[i])) {
79  i++;
80  if (prev == fmt)
81  break;
82  }
83 
84  do {
85  fmt = indev_list[i++];
86  if (!fmt)
87  break;
88  pc = fmt->priv_class;
89  if (!pc)
90  continue;
91  category = pc->category;
92  } while (category != c1 && category != c2);
93  return fmt;
94 }
95 
96 static const void *next_output(const AVOutputFormat *prev, AVClassCategory c2)
97 {
98  const AVClass *pc;
101  const FFOutputFormat *fmt = NULL;
102  int i = 0;
103 
104  while (prev && (fmt = outdev_list[i])) {
105  i++;
106  if (prev == &fmt->p)
107  break;
108  }
109 
110  do {
111  fmt = outdev_list[i++];
112  if (!fmt)
113  break;
114  pc = fmt->p.priv_class;
115  if (!pc)
116  continue;
117  category = pc->category;
118  } while (category != c1 && category != c2);
119  return fmt;
120 }
121 
123 {
125 }
126 
128 {
130 }
131 
133 {
135 }
136 
138 {
140 }
ff_xcbgrab_demuxer
const AVInputFormat ff_xcbgrab_demuxer
Definition: xcbgrab.c:903
ff_pulse_muxer
const FFOutputFormat ff_pulse_muxer
Definition: pulse_audio_enc.c:792
ff_libdc1394_demuxer
const AVInputFormat ff_libdc1394_demuxer
Definition: libdc1394.c:291
ff_kmsgrab_demuxer
const AVInputFormat ff_kmsgrab_demuxer
Definition: kmsgrab.c:711
AV_CLASS_CATEGORY_NA
@ AV_CLASS_CATEGORY_NA
Definition: log.h:29
ff_bktr_demuxer
const AVInputFormat ff_bktr_demuxer
Definition: bktr.c:355
next_input
static const void * next_input(const AVInputFormat *prev, AVClassCategory c2)
Definition: alldevices.c:70
ff_decklink_muxer
const FFOutputFormat ff_decklink_muxer
Definition: decklink_enc_c.c:76
ff_decklink_demuxer
const AVInputFormat ff_decklink_demuxer
Definition: decklink_dec_c.c:114
category
category
Definition: openal-dec.c:248
c1
static const uint64_t c1
Definition: murmur3.c:52
FFOutputFormat::p
AVOutputFormat p
The public AVOutputFormat.
Definition: mux.h:36
av_input_audio_device_next
const AVInputFormat * av_input_audio_device_next(const AVInputFormat *d)
Audio input devices iterator.
Definition: alldevices.c:122
ff_alsa_demuxer
const AVInputFormat ff_alsa_demuxer
Definition: alsa_dec.c:160
ff_iec61883_demuxer
const AVInputFormat ff_iec61883_demuxer
Definition: iec61883.c:505
ff_xv_muxer
const FFOutputFormat ff_xv_muxer
Definition: xv.c:380
ff_jack_demuxer
const AVInputFormat ff_jack_demuxer
Definition: jack.c:344
AV_CLASS_CATEGORY_DEVICE_INPUT
@ AV_CLASS_CATEGORY_DEVICE_INPUT
Definition: log.h:45
ff_v4l2_demuxer
const AVInputFormat ff_v4l2_demuxer
Definition: v4l2.c:1137
ff_oss_muxer
const FFOutputFormat ff_oss_muxer
Definition: oss_enc.c:98
AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT
@ AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT
Definition: log.h:43
AVInputFormat
Definition: avformat.h:549
next_output
static const void * next_output(const AVOutputFormat *prev, AVClassCategory c2)
Definition: alldevices.c:96
ff_opengl_muxer
const FFOutputFormat ff_opengl_muxer
Definition: opengl_enc.c:1311
ff_sdl2_muxer
const FFOutputFormat ff_sdl2_muxer
Definition: sdl2.c:369
ff_v4l2_muxer
const FFOutputFormat ff_v4l2_muxer
Definition: v4l2enc.c:115
avpriv_register_devices
void avpriv_register_devices(const FFOutputFormat *const o[], const AVInputFormat *const i[])
Definition: allformats.c:620
ff_sndio_muxer
const FFOutputFormat ff_sndio_muxer
Definition: sndio_enc.c:90
ff_avfoundation_demuxer
const AVInputFormat ff_avfoundation_demuxer
Definition: avfoundation.m:1295
internal.h
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
NULL
#define NULL
Definition: coverity.c:32
AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT
@ AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT
Definition: log.h:40
FFOutputFormat
Definition: mux.h:32
AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT
@ AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT
Definition: log.h:41
ff_vfwcap_demuxer
const AVInputFormat ff_vfwcap_demuxer
Definition: vfwcap.c:485
AVOutputFormat::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: avformat.h:539
ff_android_camera_demuxer
const AVInputFormat ff_android_camera_demuxer
Definition: android_camera.c:863
ff_pulse_demuxer
const AVInputFormat ff_pulse_demuxer
Definition: pulse_audio_dec.c:396
ff_fbdev_muxer
const FFOutputFormat ff_fbdev_muxer
Definition: fbdev_enc.c:210
ff_alsa_muxer
const FFOutputFormat ff_alsa_muxer
Definition: alsa_enc.c:169
AVClass::category
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
Definition: log.h:114
av_output_video_device_next
const AVOutputFormat * av_output_video_device_next(const AVOutputFormat *d)
Video output devices iterator.
Definition: alldevices.c:137
ff_dshow_demuxer
const AVInputFormat ff_dshow_demuxer
Definition: dshow.c:1927
avdevice.h
ff_sndio_demuxer
const AVInputFormat ff_sndio_demuxer
Definition: sndio_dec.c:112
ff_gdigrab_demuxer
const AVInputFormat ff_gdigrab_demuxer
gdi grabber device demuxer declaration
Definition: gdigrab.c:680
AVClassCategory
AVClassCategory
Definition: log.h:28
AVOutputFormat
Definition: avformat.h:510
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:255
AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT
@ AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT
Definition: log.h:42
ff_openal_demuxer
const AVInputFormat ff_openal_demuxer
Definition: openal-dec.c:251
ff_lavfi_demuxer
const AVInputFormat ff_lavfi_demuxer
Definition: lavfi.c:496
ff_caca_muxer
const FFOutputFormat ff_caca_muxer
Definition: caca.c:224
c2
static const uint64_t c2
Definition: murmur3.c:53
AV_CLASS_CATEGORY_DEVICE_OUTPUT
@ AV_CLASS_CATEGORY_DEVICE_OUTPUT
Definition: log.h:44
av_output_audio_device_next
const AVOutputFormat * av_output_audio_device_next(const AVOutputFormat *d)
Audio output devices iterator.
Definition: alldevices.c:132
ff_fbdev_demuxer
const AVInputFormat ff_fbdev_demuxer
Definition: fbdev_dec.c:235
ff_libcdio_demuxer
const AVInputFormat ff_libcdio_demuxer
Definition: libcdio.c:183
d
d
Definition: ffmpeg_filter.c:424
av_input_video_device_next
const AVInputFormat * av_input_video_device_next(const AVInputFormat *d)
Video input devices iterator.
Definition: alldevices.c:127
ff_audiotoolbox_muxer
const FFOutputFormat ff_audiotoolbox_muxer
Definition: audiotoolbox.m:302
AVInputFormat::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: avformat.h:579
avdevice_register_all
void avdevice_register_all(void)
Initialize libavdevice and register all the input and output devices.
Definition: alldevices.c:65
mux.h
ff_oss_demuxer
const AVInputFormat ff_oss_demuxer
Definition: oss_dec.c:133