UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
ldgm.h
Go to the documentation of this file.
1/*
2 * FILE: ldgm.h
3 * AUTHOR: Martin Pulec <pulec@cesnet.cz>
4 *
5 * Copyright (c) 1998-2000 University College London
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, is permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by the Computer Science
19 * Department at University College London.
20 * 4. Neither the name of the University nor of the Department may be used
21 * to endorse or promote products derived from this software without
22 * specific prior written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 */
36
37#ifndef __LDGM_H__
38#define __LDGM_H__
39
40#define LDGM_MAXIMAL_SIZE_RATIO 1
41
42#include <map>
43#include <memory>
44
45#include "fec.h"
46
47#define DEFAULT_LDGM_SEED 1
48
49#define LDGM_GPU_API_VERSION 1
50
51class LDGM_session;
52struct video_frame;
53
54struct ldgm : public fec{
55 ldgm(unsigned int k, unsigned int m, unsigned int c, unsigned int seed);
56 ldgm(int packet_size, int frame_size, double max_expected_loss);
57 ldgm(const char *cfg);
58 void set_params(unsigned int k, unsigned int m, unsigned int c, unsigned int seed);
59 std::shared_ptr<video_frame> encode(std::shared_ptr<video_frame>);
60 bool decode(char *in, int in_len, char **out, int *len,
61 const std::map<int, int> &);
62
63private:
64 void init(unsigned int k, unsigned int m, unsigned int c, unsigned int seed = DEFAULT_LDGM_SEED);
65
66 std::shared_ptr<LDGM_session> m_coding_session;
67 unsigned int m_k, m_m, m_c;
68 unsigned int m_seed;
69};
70
71#endif /* __LDGM_H__ */
int void size_t * len
Parent class for CPU and GPU implementations of LDGM coding.
#define DEFAULT_LDGM_SEED
Definition ldgm.h:47
Definition fec.h:51
Definition ldgm.h:54
std::shared_ptr< video_frame > encode(std::shared_ptr< video_frame >)
Definition ldgm.cpp:426
unsigned int m_seed
Definition ldgm.h:68
unsigned int m_c
Definition ldgm.h:67
void init(unsigned int k, unsigned int m, unsigned int c, unsigned int seed=DEFAULT_LDGM_SEED)
Definition ldgm.cpp:212
std::shared_ptr< LDGM_session > m_coding_session
Definition ldgm.h:66
unsigned int m_k
Definition ldgm.h:67
bool decode(char *in, int in_len, char **out, int *len, const std::map< int, int > &)
Definition ldgm.cpp:244
unsigned int m_m
Definition ldgm.h:67
ldgm(unsigned int k, unsigned int m, unsigned int c, unsigned int seed)
Definition ldgm.cpp:239
void set_params(unsigned int k, unsigned int m, unsigned int c, unsigned int seed)
Definition ldgm.cpp:161
Struct video_frame represents a video frame and contains video description.
Definition types.h:305