summaryrefslogtreecommitdiff
path: root/src/rtp_profile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtp_profile.h')
-rw-r--r--src/rtp_profile.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/rtp_profile.h b/src/rtp_profile.h
new file mode 100644
index 0000000..96dc9eb
--- /dev/null
+++ b/src/rtp_profile.h
@@ -0,0 +1,86 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set et sw=2 ts=2: */
+/***************************************************************************
+ * rtp_profile.h
+ *
+ * Wed Sep 11 08:40:11 CEST 2013
+ * Copyright 2013 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of lrtp.
+ *
+ * lrtp is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * lrtp is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with lrtp; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+#ifndef __LRTP_RTP_PROFILE_H__
+#define __LRTP_RTP_PROFILE_H__
+
+#include <stdint.h>
+#include <list>
+
+#include "rtp.h"
+
+struct lrtp_t;
+
+typedef struct {
+ const char *data;
+ size_t size;
+ size_t offset;
+} inputframe_t;
+
+typedef struct {
+ char *data;
+ size_t size;
+
+ csrc_t csrc;
+ unsigned int ts;
+ // TODO: Add other metadata ...
+
+} outputframe_t;
+
+struct lrtp_profile_t {
+ struct lrtp_t *lrtp;
+ lrtp_profile_id_t id;
+ unsigned int csrc;
+
+ // Frames ready for packing with this profile:
+ std::list<inputframe_t *> framelist;
+
+ // Profile functions:
+ /**
+ * Custom callback used when a frame has been processed.
+ * This could be the place to call free(3), decrease a reference counter or
+ * re-add to a memory pool.
+ * Use ptr to pass custom parameters to the callback.
+ * If NULL, no call is performed.
+ */
+ void (*process_finished)(struct lrtp_profile_t *profile,
+ const char *frame, void *ptr);
+ void *process_finished_ptr;
+
+ int (*pack)(struct lrtp_profile_t *profile,
+ const char *frame, size_t framesize,
+ RTP &rtp);
+
+ int (*unpack)(struct lrtp_profile_t *profile,
+ const RTP &rtp,
+ std::list<outputframe_t *> &framelist);
+
+ void (*destroy)(struct lrtp_profile_t *profile);
+
+};
+
+#endif/*__LRTP_RTP_PROFILE_H__*/