sout: add SDI stream output
[vlc.git] / modules / stream_out / sdi / DBMSDIOutput.hpp
blob915ac335a78c875177f5757ae1a019663ec04ced
1 /*****************************************************************************
2 * DBMSDIOutput.hpp: Decklink SDI Output
3 *****************************************************************************
4 * Copyright © 2014-2016 VideoLAN and VideoLAN Authors
5 * 2018 VideoLabs
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation; either version 2.1 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with this program; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
20 *****************************************************************************/
21 #ifndef DBMSDIOUTPUT_HPP
22 #define DBMSDIOUTPUT_HPP
24 #include "SDIOutput.hpp"
26 #include <vlc_es.h>
28 #include <DeckLinkAPI.h>
30 namespace sdi_sout
32 class DBMSDIOutput : public SDIOutput
34 public:
35 DBMSDIOutput(sout_stream_t *);
36 ~DBMSDIOutput();
37 virtual AbstractStream *Add(const es_format_t *); /* reimpl */
38 virtual int Open(); /* impl */
39 virtual int Process(); /* impl */
41 protected:
42 int ProcessVideo(picture_t *);
43 int ProcessAudio(block_t *);
44 virtual int ConfigureVideo(const video_format_t *); /* impl */
45 virtual int ConfigureAudio(const audio_format_t *); /* impl */
47 private:
48 IDeckLink *p_card;
49 IDeckLinkOutput *p_output;
51 BMDTimeScale timescale;
52 BMDTimeValue frameduration;
53 vlc_tick_t lasttimestamp;
54 /* XXX: workaround card clock drift */
55 vlc_tick_t offset;
57 bool b_running;
58 int Start();
59 const char *ErrorToString(long i_code);
60 IDeckLinkDisplayMode * MatchDisplayMode(const video_format_t *,
61 BMDDisplayMode = bmdDisplayModeNotSupported);
62 int doProcessVideo(picture_t *);
63 picture_t * CreateNoSignalPicture(const char*, const video_format_t *);
67 #endif // DBMSDIOUTPUT_HPP