[svn-commits] file: branch file/mf-attributes r417748 - /team/file/mf-attributes/res/
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Wed Jul 2 05:18:05 CDT 2014
Author: file
Date: Wed Jul 2 05:18:02 2014
New Revision: 417748
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=417748
Log:
Use a macro for getting the joint value in res_format_attr_h263 and res_format_attr_h264.
Modified:
team/file/mf-attributes/res/res_format_attr_h263.c
team/file/mf-attributes/res/res_format_attr_h264.c
Modified: team/file/mf-attributes/res/res_format_attr_h263.c
URL: http://svnview.digium.com/svn/asterisk/team/file/mf-attributes/res/res_format_attr_h263.c?view=diff&rev=417748&r1=417747&r2=417748
==============================================================================
--- team/file/mf-attributes/res/res_format_attr_h263.c (original)
+++ team/file/mf-attributes/res/res_format_attr_h263.c Wed Jul 2 05:18:02 2014
@@ -89,6 +89,8 @@
return 0;
}
+#define DETERMINE_JOINT(joint, attr1, attr2, field) (joint->field = (attr1 && attr1->field) ? attr1->field : (attr2 && attr2->field) ? attr2->field : 0)
+
static struct ast_format *h263_getjoint(const struct ast_format *format1, const struct ast_format *format2)
{
struct ast_format *cloned;
@@ -103,28 +105,28 @@
attr1 = ast_format_get_attribute_data(format1);
attr2 = ast_format_get_attribute_data(format2);
- attr->SQCIF = (attr1 && attr1->SQCIF) ? attr1->SQCIF : (attr2 && attr2->SQCIF) ? attr2->SQCIF : 0;
- attr->QCIF = (attr1 && attr1->QCIF) ? attr1->QCIF : (attr2 && attr2->QCIF) ? attr2->QCIF : 0;
- attr->CIF = (attr1 && attr1->CIF) ? attr1->CIF : (attr2 && attr2->CIF) ? attr2->CIF : 0;
- attr->CIF4 = (attr1 && attr1->CIF4) ? attr1->CIF4 : (attr2 && attr2->CIF4) ? attr2->CIF4 : 0;
- attr->VGA = (attr1 && attr1->VGA) ? attr1->VGA : (attr2 && attr2->VGA) ? attr2->VGA : 0;
- attr->CUSTOM_XMAX = (attr1 && attr1->CUSTOM_XMAX) ? attr1->CUSTOM_XMAX : (attr2 && attr2->CUSTOM_XMAX) ? attr2->CUSTOM_XMAX : 0;
- attr->CUSTOM_YMAX = (attr1 && attr1->CUSTOM_YMAX) ? attr1->CUSTOM_YMAX : (attr2 && attr2->CUSTOM_YMAX) ? attr2->CUSTOM_YMAX : 0;
- attr->CUSTOM_MPI = (attr1 && attr1->CUSTOM_MPI) ? attr1->CUSTOM_MPI : (attr2 && attr2->CUSTOM_MPI) ? attr2->CUSTOM_MPI : 0;
- attr->F = (attr1 && attr1->F) ? attr1->F : (attr2 && attr2->F) ? attr2->F : 0;
- attr->I = (attr1 && attr1->I) ? attr1->I : (attr2 && attr2->I) ? attr2->I : 0;
- attr->J = (attr1 && attr1->J) ? attr1->J : (attr2 && attr2->J) ? attr2->J : 0;
- attr->T = (attr1 && attr1->T) ? attr1->T : (attr2 && attr2->T) ? attr2->T : 0;
- attr->K = (attr1 && attr1->K) ? attr1->K : (attr2 && attr2->K) ? attr2->K : 0;
- attr->N = (attr1 && attr1->N) ? attr1->N : (attr2 && attr2->N) ? attr2->N : 0;
- attr->P_SUB1 = (attr1 && attr1->P_SUB1) ? attr1->P_SUB1 : (attr2 && attr2->P_SUB1) ? attr2->P_SUB1 : 0;
- attr->P_SUB2 = (attr1 && attr1->P_SUB2) ? attr1->P_SUB2 : (attr2 && attr2->P_SUB2) ? attr2->P_SUB2 : 0;
- attr->P_SUB3 = (attr1 && attr1->P_SUB3) ? attr1->P_SUB3 : (attr2 && attr2->P_SUB3) ? attr2->P_SUB3 : 0;
- attr->P_SUB4 = (attr1 && attr1->P_SUB4) ? attr1->P_SUB4 : (attr2 && attr2->P_SUB4) ? attr2->P_SUB4 : 0;
- attr->PAR_WIDTH = (attr1 && attr1->PAR_WIDTH) ? attr1->PAR_WIDTH : (attr2 && attr2->PAR_WIDTH) ? attr2->PAR_WIDTH : 0;
- attr->PAR_HEIGHT = (attr1 && attr1->PAR_HEIGHT) ? attr1->PAR_HEIGHT : (attr2 && attr2->PAR_HEIGHT) ? attr2->PAR_HEIGHT : 0;
- attr->BPP = (attr1 && attr1->BPP) ? attr1->BPP : (attr2 && attr2->BPP) ? attr2->BPP : 0;
- attr->HRD = (attr1 && attr1->HRD) ? attr1->HRD : (attr2 && attr2->HRD) ? attr2->HRD : 0;
+ DETERMINE_JOINT(attr, attr1, attr2, SQCIF);
+ DETERMINE_JOINT(attr, attr1, attr2, QCIF);
+ DETERMINE_JOINT(attr, attr1, attr2, CIF);
+ DETERMINE_JOINT(attr, attr1, attr2, CIF4);
+ DETERMINE_JOINT(attr, attr1, attr2, VGA);
+ DETERMINE_JOINT(attr, attr1, attr2, CUSTOM_XMAX);
+ DETERMINE_JOINT(attr, attr1, attr2, CUSTOM_YMAX);
+ DETERMINE_JOINT(attr, attr1, attr2, CUSTOM_MPI);
+ DETERMINE_JOINT(attr, attr1, attr2, F);
+ DETERMINE_JOINT(attr, attr1, attr2, I);
+ DETERMINE_JOINT(attr, attr1, attr2, J);
+ DETERMINE_JOINT(attr, attr1, attr2, T);
+ DETERMINE_JOINT(attr, attr1, attr2, K);
+ DETERMINE_JOINT(attr, attr1, attr2, N);
+ DETERMINE_JOINT(attr, attr1, attr2, P_SUB1);
+ DETERMINE_JOINT(attr, attr1, attr2, P_SUB2);
+ DETERMINE_JOINT(attr, attr1, attr2, P_SUB3);
+ DETERMINE_JOINT(attr, attr1, attr2, P_SUB4);
+ DETERMINE_JOINT(attr, attr1, attr2, PAR_WIDTH);
+ DETERMINE_JOINT(attr, attr1, attr2, PAR_HEIGHT);
+ DETERMINE_JOINT(attr, attr1, attr2, BPP);
+ DETERMINE_JOINT(attr, attr1, attr2, HRD);
return cloned;
}
Modified: team/file/mf-attributes/res/res_format_attr_h264.c
URL: http://svnview.digium.com/svn/asterisk/team/file/mf-attributes/res/res_format_attr_h264.c?view=diff&rev=417748&r1=417747&r2=417748
==============================================================================
--- team/file/mf-attributes/res/res_format_attr_h264.c (original)
+++ team/file/mf-attributes/res/res_format_attr_h264.c Wed Jul 2 05:18:02 2014
@@ -113,9 +113,55 @@
return AST_FORMAT_CMP_NOT_EQUAL;
}
+#define DETERMINE_JOINT(joint, attr1, attr2, field) (joint->field = (attr1 && attr1->field) ? attr1->field : (attr2 && attr2->field) ? attr2->field : 0)
+
static struct ast_format *h264_getjoint(const struct ast_format *format1, const struct ast_format *format2)
{
- return ast_format_clone(format1);
+ struct ast_format *cloned;
+ struct h264_attr *attr, *attr1, *attr2;
+
+ cloned = ast_format_clone(format1);
+ if (!cloned) {
+ return NULL;
+ }
+ attr = ast_format_get_attribute_data(cloned);
+
+ attr1 = ast_format_get_attribute_data(format1);
+ attr2 = ast_format_get_attribute_data(format2);
+
+ DETERMINE_JOINT(attr, attr1, attr2, PROFILE_IDC);
+ DETERMINE_JOINT(attr, attr1, attr2, PROFILE_IOP);
+ DETERMINE_JOINT(attr, attr1, attr2, LEVEL);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_MBPS);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_FS);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_CPB);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_DPB);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_BR);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_SMBPS);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_FPS);
+ DETERMINE_JOINT(attr, attr1, attr2, REDUNDANT_PIC_CAP);
+ DETERMINE_JOINT(attr, attr1, attr2, PARAMETER_ADD);
+ DETERMINE_JOINT(attr, attr1, attr2, SPROP_INTERLEAVING_DEPTH);
+ DETERMINE_JOINT(attr, attr1, attr2, SPROP_DEINT_BUF_REQ);
+ DETERMINE_JOINT(attr, attr1, attr2, DEINT_BUF_CAP);
+ DETERMINE_JOINT(attr, attr1, attr2, SPROP_INIT_BUF_TIME);
+ DETERMINE_JOINT(attr, attr1, attr2, SPROP_MAX_DON_DIFF);
+ DETERMINE_JOINT(attr, attr1, attr2, MAX_RCMD_NALU_SIZE);
+ DETERMINE_JOINT(attr, attr1, attr2, LEVEL_ASYMMETRY_ALLOWED);
+
+ if (attr1 && !ast_strlen_zero(attr1->SPS)) {
+ ast_copy_string(attr->SPS, attr1->SPS, sizeof(attr->SPS));
+ } else if (attr2 && !ast_strlen_zero(attr2->SPS)) {
+ ast_copy_string(attr->SPS, attr1->SPS, sizeof(attr->SPS));
+ }
+
+ if (attr1 && !ast_strlen_zero(attr1->PPS)) {
+ ast_copy_string(attr->PPS, attr1->PPS, sizeof(attr->PPS));
+ } else if (attr2 && !ast_strlen_zero(attr2->PPS)) {
+ ast_copy_string(attr->PPS, attr1->PPS, sizeof(attr->PPS));
+ }
+
+ return cloned;
}
static struct ast_format *h264_sdp_parse(const struct ast_format *format, const char *attributes)
More information about the svn-commits
mailing list