[svn-commits] file: branch group/media_formats r407982 - in /team/group/media_formats: form...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Feb 12 06:25:03 CST 2014


Author: file
Date: Wed Feb 12 06:24:58 2014
New Revision: 407982

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=407982
Log:
Finish up format_h263 and format_h264.

Modified:
    team/group/media_formats/formats/format_h263.c
    team/group/media_formats/formats/format_h264.c
    team/group/media_formats/include/asterisk/format_cache.h
    team/group/media_formats/include/asterisk/frame.h

Modified: team/group/media_formats/formats/format_h263.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/formats/format_h263.c?view=diff&rev=407982&r1=407981&r2=407982
==============================================================================
--- team/group/media_formats/formats/format_h263.c (original)
+++ team/group/media_formats/formats/format_h263.c Wed Feb 12 06:24:58 2014
@@ -35,6 +35,7 @@
 #include "asterisk/mod_format.h"
 #include "asterisk/module.h"
 #include "asterisk/endian.h"
+#include "asterisk/format_cache.h"
 
 /* Some Ideas for this code came from makeh263e.c by Jeffrey Chilton */
 
@@ -82,9 +83,6 @@
 		ast_log(LOG_WARNING, "Length %d is too long\n", len);
 		return NULL;
 	}
-	s->fr.frametype = AST_FRAME_VIDEO;
-	ast_format_set(&s->fr.subclass.format, AST_FORMAT_H263, 0);
-	s->fr.mallocd = 0;
 	AST_FRAME_SET_BUFFER(&s->fr, s->buf, AST_FRIENDLY_OFFSET, len);
 	if ((res = fread(s->fr.data.ptr, 1, s->fr.datalen, s->f)) != s->fr.datalen) {
 		if (res)
@@ -93,11 +91,7 @@
 	}
 	s->fr.samples = fs->lastts;	/* XXX what ? */
 	s->fr.datalen = len;
-	if (mark) {
-		ast_format_set_video_mark(&s->fr.subclass.format);
-	}
-	s->fr.delivery.tv_sec = 0;
-	s->fr.delivery.tv_usec = 0;
+	s->fr.subclass.video.rtp_marker_bit = mark;
 	if ((res = fread(&ts, 1, sizeof(ts), s->f)) == sizeof(ts)) {
 		fs->lastts = ntohl(ts);
 		*whennext = fs->lastts * 4/45;
@@ -112,15 +106,7 @@
 	unsigned int ts;
 	unsigned short len;
 	uint32_t mark = 0;
-	if (f->frametype != AST_FRAME_VIDEO) {
-		ast_log(LOG_WARNING, "Asked to write non-video frame!\n");
-		return -1;
-	}
-	mark = ast_format_get_video_mark(&f->subclass.format) ? 0x8000 : 0;
-	if (f->subclass.format.id != AST_FORMAT_H263) {
-		ast_log(LOG_WARNING, "Asked to write non-h263 frame (%s)!\n", ast_getformatname(&f->subclass.format));
-		return -1;
-	}
+	mark = f->subclass.video.rtp_marker_bit ? 0x8000 : 0;
 	ts = htonl(f->samples);
 	if ((res = fwrite(&ts, 1, sizeof(ts), fs->f)) != sizeof(ts)) {
 			ast_log(LOG_WARNING, "Bad write (%d/4): %s\n", res, strerror(errno));
@@ -182,7 +168,7 @@
 
 static int load_module(void)
 {
-	ast_format_set(&h263_f.format, AST_FORMAT_H263, 0);
+	h263_f.format = ast_format_h263;
 	if (ast_format_def_register(&h263_f))
 		return AST_MODULE_LOAD_FAILURE;
 	return AST_MODULE_LOAD_SUCCESS;

Modified: team/group/media_formats/formats/format_h264.c
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/formats/format_h264.c?view=diff&rev=407982&r1=407981&r2=407982
==============================================================================
--- team/group/media_formats/formats/format_h264.c (original)
+++ team/group/media_formats/formats/format_h264.c Wed Feb 12 06:24:58 2014
@@ -35,6 +35,7 @@
 #include "asterisk/mod_format.h"
 #include "asterisk/module.h"
 #include "asterisk/endian.h"
+#include "asterisk/format_cache.h"
 
 /* Some Ideas for this code came from makeh264e.c by Jeffrey Chilton */
 
@@ -74,9 +75,6 @@
 		ast_log(LOG_WARNING, "Length %d is too long\n", len);
 		len = BUF_SIZE;	/* XXX truncate */
 	}
-	s->fr.frametype = AST_FRAME_VIDEO;
-	ast_format_set(&s->fr.subclass.format, AST_FORMAT_H264, 0);
-	s->fr.mallocd = 0;
 	AST_FRAME_SET_BUFFER(&s->fr, s->buf, AST_FRIENDLY_OFFSET, len);
 	if ((res = fread(s->fr.data.ptr, 1, s->fr.datalen, s->f)) != s->fr.datalen) {
 		if (res)
@@ -85,11 +83,7 @@
 	}
 	s->fr.samples = fs->lastts;
 	s->fr.datalen = len;
-	if (mark) {
-		ast_format_set_video_mark(&s->fr.subclass.format);
-	}
-	s->fr.delivery.tv_sec = 0;
-	s->fr.delivery.tv_usec = 0;
+	s->fr.subclass.video.rtp_marker_bit = mark;
 	if ((res = fread(&ts, 1, sizeof(ts), s->f)) == sizeof(ts)) {
 		fs->lastts = ntohl(ts);
 		*whennext = fs->lastts * 4/45;
@@ -105,15 +99,7 @@
 	unsigned short len;
 	int mark;
 
-	if (f->frametype != AST_FRAME_VIDEO) {
-		ast_log(LOG_WARNING, "Asked to write non-video frame!\n");
-		return -1;
-	}
-	mark = ast_format_get_video_mark(&f->subclass.format) ? 0x8000 : 0;
-	if (f->subclass.format.id != AST_FORMAT_H264) {
-		ast_log(LOG_WARNING, "Asked to write non-h264 frame (%s)!\n", ast_getformatname(&f->subclass.format));
-		return -1;
-	}
+	mark = f->subclass.video.rtp_marker_bit ? 0x8000 : 0;
 	ts = htonl(f->samples);
 	if ((res = fwrite(&ts, 1, sizeof(ts), s->f)) != sizeof(ts)) {
 		ast_log(LOG_WARNING, "Bad write (%d/4): %s\n", res, strerror(errno));
@@ -175,7 +161,7 @@
 
 static int load_module(void)
 {
-	ast_format_set(&h264_f.format, AST_FORMAT_H264, 0);
+	h264_f.format = ast_format_h264;
 	if (ast_format_def_register(&h264_f))
 		return AST_MODULE_LOAD_FAILURE;
 	return AST_MODULE_LOAD_SUCCESS;

Modified: team/group/media_formats/include/asterisk/format_cache.h
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/include/asterisk/format_cache.h?view=diff&rev=407982&r1=407981&r2=407982
==============================================================================
--- team/group/media_formats/include/asterisk/format_cache.h (original)
+++ team/group/media_formats/include/asterisk/format_cache.h Wed Feb 12 06:24:58 2014
@@ -144,6 +144,11 @@
 extern struct ast_format *ast_format_h263;
 
 /*!
+ * \brief Built-in cached h264 format.
+ */
+extern struct ast_format *ast_format_h264;
+
+/*!
  * \brief Built-in cached jpeg format.
  */
 extern struct ast_format *ast_format_jpeg;

Modified: team/group/media_formats/include/asterisk/frame.h
URL: http://svnview.digium.com/svn/asterisk/team/group/media_formats/include/asterisk/frame.h?view=diff&rev=407982&r1=407981&r2=407982
==============================================================================
--- team/group/media_formats/include/asterisk/frame.h (original)
+++ team/group/media_formats/include/asterisk/frame.h Wed Feb 12 06:24:58 2014
@@ -129,9 +129,15 @@
 	AST_FRFLAG_HAS_TIMING_INFO = (1 << 0),
 };
 
+struct ast_frame_video {
+	struct ast_format *format;
+	unsigned int rtp_marker_bit;
+};
+
 union ast_frame_subclass {
 	int integer;
 	struct ast_format *format;
+	struct ast_frame_video video;
 };
 
 /*! \brief Data structure associated with a single frame of data




More information about the svn-commits mailing list