tea是什么意思| 治白内障用什么药最好| 喝酒上头是什么原因| 吃力不讨好是什么意思| 梦见蝉是什么意思| 老虎五行属什么| 急性中耳炎吃什么药| 石千读什么| lookbook是什么意思| 小孩拉肚子吃什么食物好| 拜阿司匹林什么时间吃最好| 排骨炒什么配菜好吃| 早上起床手指肿胀是什么原因| score是什么意思| 睡觉流口水是什么情况| 酒酿蛋什么时候吃效果最好| 万中无一什么意思| agoni什么意思| 上传下达是什么意思| 什么是辅警| 氟斑牙是什么原因造成的| 由加页念什么| 什么人不适合去高原| 4月28号是什么星座| 红酒是什么味道| 一直头疼是什么原因| 寂灭是什么意思| 均质是什么意思| 湿疹用什么药膏好| 农历7月是什么星座| 早醒是什么原因| 淀粉酶是查什么的| 金兰之交是什么意思| 企业hr是什么意思| 什么不得什么| 落花生的落是什么意思| 乐可是什么| 湿热体质适合喝什么茶| 低压48有什么危险| 四十属什么| 孵化器公司是干什么的| 什么的飞机| 叶绿素是什么| 司长什么级别| 紫色是什么颜色调出来的| 端午节安康是什么意思| 生命线分叉代表什么| 恶露是什么意思| 右手大拇指发麻是什么原因| 做雪糕需要什么材料| 为什么月经前乳房胀痛| 头发发黄是什么原因造成的| 子宫肌瘤变性是什么意思| 拍胸片挂什么科室| 常吐痰是什么原因| 七夕节是什么时候| 王几是什么字| 公安局大队长是什么级别| 胃不好吃什么好| 吃什么变碱性体质最快| 嘴辰发紫是什么病| 卧是什么意思| ppm是什么意思| 小马过河的故事告诉我们什么道理| 梦见喝水是什么意思| 叉烧是什么意思| 乖戾是什么意思| 物理压榨油是什么意思| 勤字五行属什么| vte是什么| 金黄金黄的什么填空| 冰糖是什么做的| 低压高是什么引起的| resp是什么| 神经衰弱吃什么药| 疖子是什么原因引起的| 脂肪肝吃什么中成药| 地球是什么生肖| 咳嗽不能吃什么食物| 印度信仰什么教| 乌鸡蛋什么颜色| 神仙是什么意思| 癌胚抗原是什么意思| 医院三甲是什么意思| 腿困是什么原因| 活血化瘀吃什么药| 手心脚心发热是什么原因引起的| 药引子是什么意思| 减肥最好的办法是什么| 精神分裂吃什么药| 甲鱼吃什么| 24属什么生肖| 2003属什么| 大便黑色是什么问题| 不想吃饭吃什么药| 黄芪长什么样子的图片| 10月28号是什么星座| 婴儿便便是绿色的是什么原因| 冲正是什么意思| wl是什么意思| 养肝护肝吃什么药| 头疼一般是什么原因引起的| 胃酸烧心吃什么药| 军字五行属什么| 垂髫是什么意思| 静电对人体有什么危害| 中度贫血是什么原因造成的| 梦见蛇是什么意思啊| 处心积虑是什么意思| 客家人为什么叫客家人| 医院可以点痣吗挂什么科| 2016年属猴是什么命| 嗡阿吽是什么意思| 糟卤对身体有什么危害| 阴道发臭是什么原因| 双十一是什么节日| 21三体高风险是什么意思| 什么叫血沉| 故宫什么时候闭馆| 知府相当于现在什么官| 梦见种树是什么兆头| 9月13日是什么纪念日| 甲亢能吃什么水果| 亚硝酸盐是什么| 炒菜是什么意思| 金蟾折桂什么意思| leep术是什么手术| 小孩晚上睡觉流口水是什么原因| 众星捧月是什么意思| 心跳的快是什么原因| 脚板疼是什么原因| 男孩长虎牙预示什么| 秋葵不能和什么一起吃| 广东古代叫什么| 伯父是什么关系| 6月10日什么星座| 囫囵吞枣是什么意思| 牙龈肿痛用什么药好得快| 怕是什么生肖| 天蝎座什么象星座| 什么是包容| 沈阳有什么大学| 56年属什么| 胸长什么样| 银行卡销户是什么意思| 9月3号是什么日子| 三七花泡水喝有什么功效| tid是什么意思| 既济是什么意思| 缺锌吃什么食物| 胸口中间疼挂什么科| 农历七月初七是什么节日| 青少年梦遗有什么危害| 什么发什么颜| 一什么露珠| 朱元璋为什么不杀朱棣| 8月18日什么星座| 怜悯之心是什么意思| hpv疫苗是什么| 女性排卵有什么症状或感觉| 视力模糊用什么眼药水| 什么是切片| 莲雾是什么| prbpm是什么意思| 水肺潜水是什么意思| 乙肝两对半和乙肝五项有什么区别| 太形象了是什么意思| 特警属于什么编制| ad和d3有什么区别| 看病人送什么花合适| 小孩子发烧是什么原因引起的| 腹痛腹泻吃什么药| 暑假是什么时候| 静脉炎吃什么药好得快| 江西特产有什么| 女生胸部长什么样| fdi是什么意思| 足字旁的字跟什么有关| 已所不欲勿施于人是什么意思| 哺乳期可以吃什么感冒药| 被蝎子蛰了用什么药| ua是什么意思| 尿碘是检查什么的| 吃什么指甲长得快| 火凤凰是什么意思| 9月25日是什么星座| 山竹什么时候吃是应季| 股票的量比是什么意思| 结节低回声是什么意思| 志司是什么意思| 老豆是什么意思| 相濡以沫是什么生肖| 甲亢吃什么食物好| 不加要是什么字| 女性肾功能不好有什么症状| 眼睛看东西模糊是什么原因| 吃什么有奶水| 痰多是什么原因引起的| 多囊是什么症状| 什么样的歌声| 病毒感染吃什么消炎药| 经常叹气是什么原因| 梦到上坟是什么意思| 孩子嗓子有痰吃什么药| 胆红素高吃什么药| 甜字五行属什么| 六月二号是什么星座| 欲望什么意思| 意念灰是什么意思| ol什么意思| 附件炎吃什么药最好| 什么是妈宝男| 禁忌症是什么意思| 扦脚是什么意思| 什么行业最赚钱| 闰6月是什么意思| 狗狗发抖是什么原因| 小猫为什么会踩奶| 列文虎克发明了什么| 老是打嗝是什么原因| 宝宝发烧手脚冰凉是什么原因| 93年是什么年| 川芎有什么功效与作用| 羞明畏光是什么意思| 大排畸和四维的区别是什么| 袋鼠吃什么| 政治家是什么意思| 三亚在海南的什么位置| 鼻子老流鼻涕是什么原因引起| 睡觉口干舌燥什么原因| 肠梗阻挂什么科| 痛风急性发作期吃什么药| 什么化妆品好| 嘴涩是什么原因造成的| 女人左手麻要注意什么| 上海曙光医院擅长什么| 空腹打嗝是什么原因引起的| 辣木籽是什么| 贫血查什么| 窈窕是什么意思| 硝酸酯类药物有什么药| 身上泡疹是什么引起的| 什么排球好| 喝完酒吃点什么对胃好| 什么的小草| 测心率手表什么牌子好| 不然呢是什么意思| 尼可刹米别名叫什么| 两三分钟就射什么原因| 节哀顺便是什么意思| 为什么胸部会胀痛| 喝益生菌有什么好处| 西洋参长什么样子图片| 子宫形态失常是什么意思| 吃什么可以回奶| 天线宝宝都叫什么名字| 小酌怡情下一句是什么| 很会放屁是什么原因| 孩子结膜炎用什么眼药水| 木糖醇是什么东西| 梦见女鬼是什么意思| 不景气是什么意思| 心脏为什么会跳动| 鸽子不能和什么一起吃| 百度

欧美复古风时尚街拍 你更爱千鸟格or苏格兰格子?


Directory: ../../../ffmpeg/
File: src/libavformat/img2enc.c
Date: 2025-08-04 00:43:16
Exec Total Coverage
Lines: 55 138 39.9%
Functions: 5 6 83.3%
Branches: 23 96 24.0%

Line Branch Exec Source
1 /*
2 * Image format
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 * Copyright (c) 2004 Michael Niedermayer
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23 #include <time.h>
24
25 #include "config_components.h"
26
27 #include "libavutil/intreadwrite.h"
28 #include "libavutil/avstring.h"
29 #include "libavutil/dict.h"
30 #include "libavutil/log.h"
31 #include "libavutil/opt.h"
32 #include "libavutil/pixdesc.h"
33 #include "libavutil/time_internal.h"
34 #include "avformat.h"
35 #include "avio_internal.h"
36 #include "internal.h"
37 #include "img2.h"
38 #include "mux.h"
39
40 typedef struct VideoMuxData {
41 const AVClass *class; /**< Class for private options. */
42 int start_img_number;
43 int img_number;
44 int split_planes; /**< use independent file for each Y, U, V plane */
45 char tmp[4][1024];
46 char target[4][1024];
47 int update;
48 int use_strftime;
49 int frame_pts;
50 const char *muxer;
51 int use_rename;
52 AVDictionary *protocol_opts;
53 } VideoMuxData;
54
55 65 static int write_header(AVFormatContext *s)
56 {
57 65 VideoMuxData *img = s->priv_data;
58 65 AVStream *st = s->streams[0];
59 65 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(st->codecpar->format);
60
61
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 65 times.
65 if (st->codecpar->codec_id == AV_CODEC_ID_GIF) {
62 img->muxer = "gif";
63
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 65 times.
65 } else if (st->codecpar->codec_id == AV_CODEC_ID_FITS) {
64 img->muxer = "fits";
65
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 65 times.
65 } else if (st->codecpar->codec_id == AV_CODEC_ID_AV1) {
66 img->muxer = "avif";
67
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 65 times.
65 } else if (st->codecpar->codec_id == AV_CODEC_ID_RAWVIDEO) {
68 const char *str = strrchr(s->url, '.');
69 img->split_planes = str
70 && !av_strcasecmp(str + 1, "y")
71 && s->nb_streams == 1
72 && desc
73 &&(desc->flags & AV_PIX_FMT_FLAG_PLANAR)
74 && desc->nb_components >= 3;
75 }
76 65 img->img_number = img->start_img_number;
77
78 65 return 0;
79 }
80
81 static int write_muxed_file(AVFormatContext *s, AVIOContext *pb, AVPacket *pkt)
82 {
83 VideoMuxData *img = s->priv_data;
84 AVCodecParameters *par = s->streams[pkt->stream_index]->codecpar;
85 AVStream *st;
86 AVPacket *const pkt2 = ffformatcontext(s)->pkt;
87 AVFormatContext *fmt = NULL;
88 int ret;
89
90 /* URL is not used directly as we are overriding the IO context later. */
91 ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->url);
92 if (ret < 0)
93 return ret;
94 st = avformat_new_stream(fmt, NULL);
95 if (!st) {
96 ret = AVERROR(ENOMEM);
97 goto out;
98 }
99 st->id = pkt->stream_index;
100
101 fmt->pb = pb;
102
103 ret = av_packet_ref(pkt2, pkt);
104 if (ret < 0)
105 goto out;
106 pkt2->stream_index = 0;
107
108 if ((ret = avcodec_parameters_copy(st->codecpar, par)) < 0 ||
109 (ret = avformat_write_header(fmt, NULL)) < 0 ||
110 (ret = av_interleaved_write_frame(fmt, pkt2)) < 0 ||
111 (ret = av_write_trailer(fmt))) {}
112
113 av_packet_unref(pkt2);
114 out:
115 avformat_free_context(fmt);
116 return ret;
117 }
118
119 151 static int write_packet_pipe(AVFormatContext *s, AVPacket *pkt)
120 {
121 151 VideoMuxData *img = s->priv_data;
122
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 151 times.
151 if (img->muxer) {
123 int ret = write_muxed_file(s, s->pb, pkt);
124 if (ret < 0)
125 return ret;
126 } else {
127 151 avio_write(s->pb, pkt->data, pkt->size);
128 }
129 151 img->img_number++;
130 151 return 0;
131 }
132
133 670 static int write_and_close(AVFormatContext *s, AVIOContext **pb, const unsigned char *buf, int size)
134 {
135 670 avio_write(*pb, buf, size);
136 670 avio_flush(*pb);
137 670 return ff_format_io_close(s, pb);
138 }
139
140 670 static int write_packet(AVFormatContext *s, AVPacket *pkt)
141 {
142 670 VideoMuxData *img = s->priv_data;
143 670 AVIOContext *pb[4] = {0};
144 char filename[1024];
145 670 AVCodecParameters *par = s->streams[pkt->stream_index]->codecpar;
146 670 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(par->format);
147 int ret, i;
148 670 int nb_renames = 0;
149 670 AVDictionary *options = NULL;
150
151
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 if (img->update) {
152 av_strlcpy(filename, s->url, sizeof(filename));
153
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 } else if (img->use_strftime) {
154 time_t now0;
155 struct tm *tm, tmpbuf;
156 time(&now0);
157 tm = localtime_r(&now0, &tmpbuf);
158 if (!strftime(filename, sizeof(filename), s->url, tm)) {
159 av_log(s, AV_LOG_ERROR, "Could not get frame filename with strftime\n");
160 return AVERROR(EINVAL);
161 }
162
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 } else if (img->frame_pts) {
163 if (ff_get_frame_filename(filename, sizeof(filename), s->url, pkt->pts, AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0) {
164 av_log(s, AV_LOG_ERROR, "Cannot write filename by pts of the frames.");
165 return AVERROR(EINVAL);
166 }
167
2/2
✓ Branch 0 taken 7 times.
✓ Branch 1 taken 663 times.
670 } else if (ff_get_frame_filename(filename, sizeof(filename), s->url,
168 670 img->img_number,
169 AV_FRAME_FILENAME_FLAGS_MULTIPLE) < 0) {
170
1/2
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
7 if (img->img_number == img->start_img_number) {
171 7 av_log(s, AV_LOG_WARNING, "The specified filename '%s' does not contain an image sequence pattern or a pattern is invalid.\n", s->url);
172 7 av_log(s, AV_LOG_WARNING,
173 "Use a pattern such as %%03d for an image sequence or "
174 "use the -update option (with -frames:v 1 if needed) to write a single image.\n");
175 7 av_strlcpy(filename, s->url, sizeof(filename));
176 } else {
177 av_log(s, AV_LOG_ERROR, "Cannot write more than one file with the same name. Are you missing the -update option or a sequence pattern?\n");
178 return AVERROR(EINVAL);
179 }
180 }
181
1/2
✓ Branch 0 taken 670 times.
✗ Branch 1 not taken.
670 for (i = 0; i < 4; i++) {
182 670 av_dict_copy(&options, img->protocol_opts, 0);
183 670 snprintf(img->tmp[i], sizeof(img->tmp[i]), "%s.tmp", filename);
184 670 av_strlcpy(img->target[i], filename, sizeof(img->target[i]));
185
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 670 times.
670 if (s->io_open(s, &pb[i], img->use_rename ? img->tmp[i] : filename, AVIO_FLAG_WRITE, &options) < 0) {
186 av_log(s, AV_LOG_ERROR, "Could not open file : %s\n", img->use_rename ? img->tmp[i] : filename);
187 ret = AVERROR(EIO);
188 goto fail;
189 }
190
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 if (options) {
191 av_log(s, AV_LOG_ERROR, "Could not recognize some protocol options\n");
192 ret = AVERROR(EINVAL);
193 goto fail;
194 }
195
196
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
670 if (!img->split_planes || i+1 >= desc->nb_components)
197 break;
198 filename[strlen(filename) - 1] = "UVAx"[i];
199 }
200
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 if (img->use_rename)
201 nb_renames = i + 1;
202
203
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 if (img->split_planes) {
204 int ysize = par->width * par->height;
205 int usize = AV_CEIL_RSHIFT(par->width, desc->log2_chroma_w) * AV_CEIL_RSHIFT(par->height, desc->log2_chroma_h);
206 if (desc->comp[0].depth >= 9) {
207 ysize *= 2;
208 usize *= 2;
209 }
210 if ((ret = write_and_close(s, &pb[0], pkt->data , ysize)) < 0 ||
211 (ret = write_and_close(s, &pb[1], pkt->data + ysize , usize)) < 0 ||
212 (ret = write_and_close(s, &pb[2], pkt->data + ysize + usize, usize)) < 0)
213 goto fail;
214 if (desc->nb_components > 3)
215 ret = write_and_close(s, &pb[3], pkt->data + ysize + 2*usize, ysize);
216
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 } else if (img->muxer) {
217 if ((ret = write_muxed_file(s, pb[0], pkt)) < 0)
218 goto fail;
219 ret = ff_format_io_close(s, &pb[0]);
220 } else {
221 670 ret = write_and_close(s, &pb[0], pkt->data, pkt->size);
222 }
223
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 if (ret < 0)
224 goto fail;
225
226
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 670 times.
670 for (i = 0; i < nb_renames; i++) {
227 int ret = ff_rename(img->tmp[i], img->target[i], s);
228 if (ret < 0)
229 return ret;
230 }
231
232 670 img->img_number++;
233 670 return 0;
234
235 fail:
236 av_dict_free(&options);
237 for (i = 0; i < FF_ARRAY_ELEMS(pb); i++)
238 if (pb[i])
239 ff_format_io_close(s, &pb[i]);
240 return ret;
241 }
242
243 65 static int query_codec(enum AVCodecID id, int std_compliance)
244 {
245 int i;
246
1/2
✓ Branch 0 taken 65 times.
✗ Branch 1 not taken.
65 for (i = 0; ff_img_tags[i].id != AV_CODEC_ID_NONE; i++)
247
1/2
✓ Branch 0 taken 65 times.
✗ Branch 1 not taken.
65 if (ff_img_tags[i].id == id)
248 65 return 1;
249
250 // Anything really can be stored in img2
251 return std_compliance < FF_COMPLIANCE_NORMAL;
252 }
253
254 #define OFFSET(x) offsetof(VideoMuxData, x)
255 #define ENC AV_OPT_FLAG_ENCODING_PARAM
256 static const AVOption muxoptions[] = {
257 { "update", "continuously overwrite one file", OFFSET(update), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
258 { "start_number", "set first number in the sequence", OFFSET(start_img_number), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, INT_MAX, ENC },
259 { "strftime", "use strftime for filename", OFFSET(use_strftime), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
260 { "frame_pts", "use current frame pts for filename", OFFSET(frame_pts), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
261 { "atomic_writing", "write files atomically (using temporary files and renames)", OFFSET(use_rename), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
262 { "protocol_opts", "specify protocol options for the opened files", OFFSET(protocol_opts), AV_OPT_TYPE_DICT, {0}, 0, 0, ENC },
263 { NULL },
264 };
265
266 #if CONFIG_IMAGE2_MUXER
267 static const AVClass img2mux_class = {
268 .class_name = "image2 muxer",
269 .item_name = av_default_item_name,
270 .option = muxoptions,
271 .version = LIBAVUTIL_VERSION_INT,
272 };
273
274 const FFOutputFormat ff_image2_muxer = {
275 .p.name = "image2",
276 .p.long_name = NULL_IF_CONFIG_SMALL("image2 sequence"),
277 .p.extensions = "bmp,dpx,exr,jls,jpeg,jpg,jxl,ljpg,pam,pbm,pcx,pfm,pgm,pgmyuv,phm,"
278 "png,ppm,sgi,tga,tif,tiff,jp2,j2c,j2k,xwd,sun,ras,rs,im1,im8,"
279 "im24,sunras,vbn,xbm,xface,pix,y,avif,qoi,hdr,wbmp",
280 .priv_data_size = sizeof(VideoMuxData),
281 .p.video_codec = AV_CODEC_ID_MJPEG,
282 .write_header = write_header,
283 .write_packet = write_packet,
284 .query_codec = query_codec,
285 .p.flags = AVFMT_NOTIMESTAMPS | AVFMT_NODIMENSIONS | AVFMT_NOFILE,
286 .p.priv_class = &img2mux_class,
287 };
288 #endif
289 #if CONFIG_IMAGE2PIPE_MUXER
290 const FFOutputFormat ff_image2pipe_muxer = {
291 .p.name = "image2pipe",
292 .p.long_name = NULL_IF_CONFIG_SMALL("piped image2 sequence"),
293 .priv_data_size = sizeof(VideoMuxData),
294 .p.video_codec = AV_CODEC_ID_MJPEG,
295 .write_header = write_header,
296 .write_packet = write_packet_pipe,
297 .query_codec = query_codec,
298 .p.flags = AVFMT_NOTIMESTAMPS | AVFMT_NODIMENSIONS
299 };
300 #endif
301

胆没了对身体有什么影响 suv什么意思 眼睛为什么会得结膜炎 伸张正义是什么意思 目是什么意思
骨裂什么症状 小厨宝是什么东西 诺诗兰属于什么档次 云肖是什么生肖 凛冽是什么意思
牙龈肿吃什么药 风险是什么意思 打嗝用什么药 雍正叫什么名字 手作是什么意思
内心独白什么意思 男人第一次什么 感觉 东方明珠什么时候亮灯 130是什么意思 排卵期身体有什么症状表现吗
蝴蝶兰什么时候开花hcv9jop3ns3r.cn 贝伐珠单抗是什么药hcv9jop3ns9r.cn 母亲节送给妈妈什么礼物好hcv9jop7ns4r.cn 降血脂吃什么药效果好hcv9jop2ns7r.cn 十月三十号什么星座hcv8jop6ns4r.cn
过期的酸奶有什么用hcv7jop9ns0r.cn ad什么时候吃最好hcv8jop0ns9r.cn 龟头责是什么意思hcv8jop0ns5r.cn 伸舌头锻炼有什么好处hcv9jop6ns4r.cn 唐筛是检查什么的bfb118.com
候和侯有什么区别hcv8jop4ns2r.cn 梦见好多蛇是什么预兆jingluanji.com 牡蛎是什么东西hcv9jop1ns1r.cn 大校相当于地方什么级别hcv8jop1ns4r.cn 减肥吃什么东西hcv9jop2ns6r.cn
6月5号什么星座hcv7jop9ns1r.cn 胆囊粗糙是什么意思hcv9jop0ns5r.cn 起风疹了用什么快速方法能解决hcv8jop7ns2r.cn 封心锁爱什么意思hcv8jop4ns3r.cn 6月2日什么星座hcv8jop7ns2r.cn
百度 技术支持:克隆侠蜘蛛池 www.kelongchi.com