手上长疣是什么原因造成的| 浮水是什么意思| 楚楚动人是什么意思| palace什么牌子| 为什么血压低| 希特勒为什么杀犹太人| 创始人是什么意思| 什么气味能驱赶猫| 属马的和什么属相最配| 梦见自己把头发剪短了是什么意思| 女同是什么| 清静是什么意思| 晴纶是什么材质| 需要一半留下一半是什么字| 脸上肉跳动是什么原因| 胃幽门螺旋杆菌吃什么药| 右边脑袋疼是什么原因| 御木本是什么档次| 突然头晕恶心是什么原因| 喝什么能补肾| 什么是苔藓皮肤病| 黑海为什么叫黑海| 鬼佬是什么意思| 瘦的快是什么原因| 走马灯是什么意思| 马冬梅是什么意思| 大姨妈量少什么原因| 经常放屁是什么问题| 吃虾不能吃什么水果| 什么药可以止血| 什么季节喝白茶| 处子之身是什么意思| 4月23日什么星座| 什么叫克隆| 胃酸有什么办法缓解| fla是什么牌子| 狗狗喝什么水| 脚底出汗是什么原因女| 笨和蠢有什么区别| 月经推后是什么原因| 微波炉什么牌子好| 中暑什么感觉| 反酸是什么意思| 梅核气有什么症状| 吃什么补黑色素最快| 一把把什么| 舌裂吃什么药| 嗓子疼吃什么| 头孢长什么样图片| a型rh阳性是什么意思| 空调的几匹是什么意思| 乳腺增生吃什么药效果好| 包拯属什么生肖| 尼特族是什么意思| 什么是肠息肉| 医院体检挂什么科| quake是什么意思| 3月21是什么星座| 笔记本电脑什么品牌好| 梦见自己搬家是什么意思| 寸是什么单位| 倾字五行属什么| 人生苦短什么意思| 555是什么烟| 鬼市是什么意思| 字字珠玑什么意思| 一个土一个阜念什么| 皮卡丘站起来变成了什么| 长智齿是什么原因引起的| 梦见在水里游泳是什么意思| 中图分类号是什么| 摩羯座属于什么象星座| 上市公司是什么意思| 臀推是什么意思| 女生考什么证书最实用| 香草味是什么味道| 咳痰带血是什么原因| 经常耳鸣是什么原因| 减肥头晕是什么原因| 为什么减肥一直减不下来| zoe什么意思| 女人每天吃什么抗衰老| 骨质增生吃什么药效果好| 手麻是什么引起的| 菊花代表什么象征意义| 口苦尿黄是什么原因| 什么叫基因检测| 脚肿是什么原因| 粘鞋子用什么胶水最好| 离宫是什么意思| 什么药可以帮助睡眠| 肝火旺吃什么好| 师公是什么意思| 来月经喝酒有什么影响| 女人左眼角有痣代表什么| 肺纤维灶是什么意思| 握手是什么意思| 静脉血栓有什么症状| 猫睡在枕头旁说明什么| 子宫疼是什么原因| 尿酸高什么原因| decaf是什么意思| 感冒喝什么粥| 衤叫什么偏旁| moose是什么意思| 大人睡觉流口水是什么原因引起的| 喝酒脸红是什么原因造成的| 康桑密达是什么意思| 钊字五行属什么| 桃胶有什么作用| 什么叫有氧运动| 身体水肿是什么原因引起的| 复三上坟是什么意思| 送荷花的寓意是什么| 靖康耻指的是什么历史事件| 胆囊炎适合吃什么食物| 记性差是什么原因| 胎儿腿短是什么原因| 胃炎吃什么好| 药师什么时候报名| 霉菌阴性是什么意思| 孕妇待产需要准备什么| 什么是阳光抑郁症| 吃谷维素有什么副作用| 整天想睡觉是什么原因| 结婚28年是什么婚| 低密度脂蛋白高是什么原因| 搪塞什么意思| 男人眉毛短是什么面相| 湘女多情是什么意思| 89年属什么生肖| 程度是什么意思| 孩子血铅高有什么症状| 怀孕1个月有什么症状| 4月28日什么星座| 超生是什么意思| 黑豆熟地水功效是什么| 利有攸往是什么意思| 什么不可什么四字词语| 为什么黄瓜是绿色的却叫黄瓜| 4.25是什么星座| 什么是中国| 五险一金的一金是什么| hape是什么牌子| 什么药溶血栓最好| 较前相仿是什么意思| spank是什么意思| 景五行属什么| 蝉联什么意思| 慢性萎缩性胃炎伴糜烂吃什么药| 梦见骑自行车是什么意思| doris什么意思| 野生天麻长什么样图片| 回归热是什么病| cross是什么牌子| 高血糖吃什么药| 下午5点半是什么时辰| 吃什么补骨髓造血| camel是什么牌子| 摇粒绒是什么面料| 西安香烟有什么牌子| 天行健下一句是什么| 冰恋是什么| 宇字属于五行属什么| 拔牙吃什么消炎药| 太五行属什么| 本垒打是什么意思| 捡漏什么意思| 具象是什么意思| 梦见两条大蟒蛇是什么征兆| cpa是什么意思| 甲醛中毒有什么症状| 怹是什么意思| 肚脐眼左右两边疼是什么原因| 放屁是什么意思| 嵌顿是什么意思| 大男子主义的男人喜欢什么样的女人| 斗破苍穹什么时候出的| 酸梅汤与什么相克| 洗牙挂什么科| 奥美拉唑是什么药| 菊花和枸杞泡水喝有什么功效| 叶酸不能和什么一起吃| 恍然大悟什么意思| maggie什么意思| 1995年的猪五行属什么| or发什么音| 阿西吧是什么意思| yishion是什么牌子| 营养师是干什么的| 摩尔每升是什么单位| 狗狗睡姿代表什么图解| 结肠炎是什么原因引起的| 武松是什么生肖| 什么是缓刑意思是什么| 素女经是什么| 葡萄柚是什么| 离婚带什么证件才能办理| 经信委是干什么的| 旺是什么意思| 身份证有什么用| 自省是什么意思| 女生不来大姨妈是什么原因| 夜宵吃什么好| 什么食物铅含量高| 黑加仑是什么水果| 中国什么武器世界第一| 糜烂性脚气用什么药| 精神什么| 活塞是什么| 茯苓是什么植物| 空是什么结构| 鼻子流黄水是什么原因| fci是什么意思| 巨蟹座和什么星座最配| 百步穿杨是什么生肖| 前降支中段心肌桥什么意思| 穿山甲用什么中药代替| 姐姐的女儿应该叫什么| 全科医学科是什么科| 头发爱出油什么原因| 走之旁与什么有关| 过人之处是什么意思| 肝炎有什么症状| 什么直跳| 边度什么意思| 浒苔是什么| 今年74岁属什么生肖| 梦见被狗咬是什么意思| wlw是什么意思| 吕字五行属什么| 黄芪什么季节喝最好| 五月一号什么星座| 褪黑素是什么东西| 红色和蓝色混合是什么颜色| 定妆喷雾什么时候用| 眼睛睁不开是什么原因| 纯碱是什么| 02属什么| 6.21什么星座| 生地和熟地有什么区别| 扁桃体发炎是什么症状| 甲状腺4a类什么意思| 生物工程学什么| 刺史相当于现在的什么官| 碱性磷酸酶高吃什么药| 父亲节要送什么礼物好| 最坚固的锁怕什么| 梦到前女友征兆是什么| 双侧苍白球钙化是什么意思| 什么的老虎| 什么是终端| 滋阴是什么意思| 96年属什么的| 文员是什么| 痱子什么样| a1什么意思| 胃酸吃什么能缓解| 艾灸治什么病| 银属于五行属什么| 备孕要注意什么| 人心是什么意思| 液基细胞学检查是什么| 电信诈骗是什么意思| 百度

green是什么颜色


Directory: ../../../ffmpeg/
File: src/libavformat/rtpenc_h263_rfc2190.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 0 108 0.0%
Functions: 0 3 0.0%
Branches: 0 28 0.0%

Line Branch Exec Source
1 /*
2 * RTP packetization for H.263 video
3 * Copyright (c) 2012 Martin Storsjo
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg 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 GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22 #include "avformat.h"
23 #include "rtpenc.h"
24 #include "libavcodec/put_bits.h"
25 #include "libavcodec/get_bits.h"
26
27 struct H263Info {
28 int src;
29 int i;
30 int u;
31 int s;
32 int a;
33 int pb;
34 int tr;
35 };
36
37 struct H263State {
38 int gobn;
39 int mba;
40 int hmv1, vmv1, hmv2, vmv2;
41 int quant;
42 };
43
44 static void send_mode_a(AVFormatContext *s1, const struct H263Info *info,
45 const uint8_t *buf, int len, int ebits, int m)
46 {
47 RTPMuxContext *s = s1->priv_data;
48 PutBitContext pb;
49
50 init_put_bits(&pb, s->buf, 32);
51 put_bits(&pb, 1, 0); /* F - 0, mode A */
52 put_bits(&pb, 1, 0); /* P - 0, normal I/P */
53 put_bits(&pb, 3, 0); /* SBIT - 0 bits */
54 put_bits(&pb, 3, ebits); /* EBIT */
55 put_bits(&pb, 3, info->src); /* SRC - source format */
56 put_bits(&pb, 1, info->i); /* I - inter/intra */
57 put_bits(&pb, 1, info->u); /* U - unrestricted motion vector */
58 put_bits(&pb, 1, info->s); /* S - syntax-baesd arithmetic coding */
59 put_bits(&pb, 1, info->a); /* A - advanced prediction */
60 put_bits(&pb, 4, 0); /* R - reserved */
61 put_bits(&pb, 2, 0); /* DBQ - 0 */
62 put_bits(&pb, 3, 0); /* TRB - 0 */
63 put_bits(&pb, 8, info->tr); /* TR */
64 flush_put_bits(&pb);
65 memcpy(s->buf + 4, buf, len);
66
67 ff_rtp_send_data(s1, s->buf, len + 4, m);
68 }
69
70 static void send_mode_b(AVFormatContext *s1, const struct H263Info *info,
71 const struct H263State *state, const uint8_t *buf,
72 int len, int sbits, int ebits, int m)
73 {
74 RTPMuxContext *s = s1->priv_data;
75 PutBitContext pb;
76
77 init_put_bits(&pb, s->buf, 64);
78 put_bits(&pb, 1, 1); /* F - 1, mode B */
79 put_bits(&pb, 1, 0); /* P - 0, mode B */
80 put_bits(&pb, 3, sbits); /* SBIT - 0 bits */
81 put_bits(&pb, 3, ebits); /* EBIT - 0 bits */
82 put_bits(&pb, 3, info->src); /* SRC - source format */
83 put_bits(&pb, 5, state->quant); /* QUANT - quantizer for the first MB */
84 put_bits(&pb, 5, state->gobn); /* GOBN - GOB number */
85 put_bits(&pb, 9, state->mba); /* MBA - MB address */
86 put_bits(&pb, 2, 0); /* R - reserved */
87 put_bits(&pb, 1, info->i); /* I - inter/intra */
88 put_bits(&pb, 1, info->u); /* U - unrestricted motion vector */
89 put_bits(&pb, 1, info->s); /* S - syntax-baesd arithmetic coding */
90 put_bits(&pb, 1, info->a); /* A - advanced prediction */
91 put_bits(&pb, 7, state->hmv1); /* HVM1 - horizontal motion vector 1 */
92 put_bits(&pb, 7, state->vmv1); /* VMV1 - vertical motion vector 1 */
93 put_bits(&pb, 7, state->hmv2); /* HVM2 - horizontal motion vector 2 */
94 put_bits(&pb, 7, state->vmv2); /* VMV2 - vertical motion vector 2 */
95 flush_put_bits(&pb);
96 memcpy(s->buf + 8, buf, len);
97
98 ff_rtp_send_data(s1, s->buf, len + 8, m);
99 }
100
101 void ff_rtp_send_h263_rfc2190(AVFormatContext *s1, const uint8_t *buf, int size,
102 const uint8_t *mb_info, int mb_info_size)
103 {
104 RTPMuxContext *s = s1->priv_data;
105 int len, sbits = 0, ebits = 0;
106 GetBitContext gb;
107 struct H263Info info = { 0 };
108 struct H263State state = { 0 };
109 int mb_info_pos = 0, mb_info_count = mb_info_size / 12;
110 const uint8_t *buf_base = buf;
111
112 s->timestamp = s->cur_timestamp;
113
114 init_get_bits(&gb, buf, size*8);
115 if (get_bits(&gb, 22) == 0x20) { /* Picture Start Code */
116 info.tr = get_bits(&gb, 8);
117 skip_bits(&gb, 2); /* PTYPE start, H.261 disambiguation */
118 skip_bits(&gb, 3); /* Split screen, document camera, freeze picture release */
119 info.src = get_bits(&gb, 3);
120 info.i = get_bits(&gb, 1);
121 info.u = get_bits(&gb, 1);
122 info.s = get_bits(&gb, 1);
123 info.a = get_bits(&gb, 1);
124 info.pb = get_bits(&gb, 1);
125 }
126
127 while (size > 0) {
128 struct H263State packet_start_state = state;
129 len = FFMIN(s->max_payload_size - 8, size);
130
131 /* Look for a better place to split the frame into packets. */
132 if (len < size) {
133 const uint8_t *end = ff_h263_find_resync_marker_reverse(buf,
134 buf + len);
135 len = end - buf;
136 if (len == s->max_payload_size - 8) {
137 /* Skip mb info prior to the start of the current ptr */
138 while (mb_info_pos < mb_info_count) {
139 uint32_t pos = AV_RL32(&mb_info[12*mb_info_pos])/8;
140 if (pos >= buf - buf_base)
141 break;
142 mb_info_pos++;
143 }
144 /* Find the first mb info past the end pointer */
145 while (mb_info_pos + 1 < mb_info_count) {
146 uint32_t pos = AV_RL32(&mb_info[12*(mb_info_pos + 1)])/8;
147 if (pos >= end - buf_base)
148 break;
149 mb_info_pos++;
150 }
151 if (mb_info_pos < mb_info_count) {
152 const uint8_t *ptr = &mb_info[12*mb_info_pos];
153 /* get position in bits in the input packet at which the next info block should be used */
154 uint32_t bit_pos = AV_RL32(ptr);
155 /* get position in bytes */
156 uint32_t pos_next_mb_info = (bit_pos + 7)/8;
157 /* check if data from the next MB info block should be used */
158 if (pos_next_mb_info <= end - buf_base) {
159 state.quant = ptr[4];
160 state.gobn = ptr[5];
161 state.mba = AV_RL16(&ptr[6]);
162 state.hmv1 = (int8_t) ptr[8];
163 state.vmv1 = (int8_t) ptr[9];
164 state.hmv2 = (int8_t) ptr[10];
165 state.vmv2 = (int8_t) ptr[11];
166 ebits = 8 * pos_next_mb_info - bit_pos;
167 len = pos_next_mb_info - (buf - buf_base);
168 mb_info_pos++;
169 }
170 } else {
171 av_log(s1, AV_LOG_ERROR, "Unable to split H.263 packet, "
172 "use -mb_info %d or -ps 1.\n",
173 s->max_payload_size - 8);
174 }
175 }
176 }
177
178 if (size > 2 && !buf[0] && !buf[1])
179 send_mode_a(s1, &info, buf, len, ebits, len == size);
180 else
181 send_mode_b(s1, &info, &packet_start_state, buf, len, sbits,
182 ebits, len == size);
183
184 if (ebits) {
185 sbits = 8 - ebits;
186 len--;
187 } else {
188 sbits = 0;
189 }
190 buf += len;
191 size -= len;
192 ebits = 0;
193 }
194 }
195

安乃近是什么药 二聚体是什么 痤疮吃什么药 乳腺增生吃什么 小淋巴结是什么意思
胳膊上的肌肉叫什么 双喜临门指什么生肖 正师级是什么军衔 mirage轮胎什么牌子 高我是什么意思
同比增长是什么意思 翎字五行属什么 男人阴囊潮湿吃什么药 低压高用什么药 什么是梅毒
抹茶粉是什么做的 大同有什么好玩的地方 乳清粉是什么 吃什么去湿气 什么叫甲状腺弥漫病变
蜂蜜有什么功效hcv7jop7ns0r.cn 六月二十四是什么日子hcv8jop0ns8r.cn 另起炉灶是什么意思hcv9jop2ns3r.cn 女人30如狼40如虎是什么意思hcv8jop4ns1r.cn 支气管挂什么科hcv9jop5ns9r.cn
竹叶青是什么hcv8jop2ns7r.cn 梦见和尚是什么预兆0297y7.com 查胃病做什么检查合适hcv9jop5ns1r.cn 急性肠胃炎吃什么药效果好hcv8jop1ns0r.cn 洛阳白马寺求什么最灵hcv8jop1ns8r.cn
爱新觉罗是什么旗hanqikai.com 腺肌症是什么病xianpinbao.com 小孩子睡觉流口水是什么原因hcv9jop5ns2r.cn 什么是人hcv9jop6ns2r.cn 香港特首是什么级别hcv9jop4ns0r.cn
kcal是什么单位hcv9jop5ns7r.cn 26岁属什么hcv8jop5ns6r.cn ecmo是什么hcv8jop3ns1r.cn 豆角不能和什么一起吃mmeoe.com 瘆人是什么意思jingluanji.com
百度