MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / get_http_header_data

Function get_http_header_data

libavformat/mmsh.c:143–211  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143static int get_http_header_data(MMSHContext *mmsh)
144{
145 MMSContext *mms = &mmsh->mms;
146 int res, len;
147 ChunkType chunk_type;
148
149 for (;;) {
150 len = 0;
151 res = chunk_type = get_chunk_header(mmsh, &len);
152 if (res < 0) {
153 return res;
154 } else if (chunk_type == CHUNK_TYPE_ASF_HEADER){
155 // get asf header and stored it
156 if (!mms->header_parsed) {
157 if (mms->asf_header) {
158 if (len != mms->asf_header_size) {
159 mms->asf_header_size = len;
160 av_log(NULL, AV_LOG_TRACE, "Header len changed from %d to %d\n",
161 mms->asf_header_size, len);
162 av_freep(&mms->asf_header);
163 }
164 }
165 mms->asf_header = av_mallocz(len);
166 if (!mms->asf_header) {
167 return AVERROR(ENOMEM);
168 }
169 mms->asf_header_size = len;
170 }
171 if (len > mms->asf_header_size) {
172 av_log(NULL, AV_LOG_ERROR,
173 "Asf header packet len = %d exceed the asf header buf size %d\n",
174 len, mms->asf_header_size);
175 return AVERROR(EIO);
176 }
177 res = ffurl_read_complete(mms->mms_hd, mms->asf_header, len);
178 if (res != len) {
179 av_log(NULL, AV_LOG_ERROR,
180 "Recv asf header data len %d != expected len %d\n", res, len);
181 return AVERROR(EIO);
182 }
183 mms->asf_header_size = len;
184 if (!mms->header_parsed) {
185 res = ff_mms_asf_header_parser(mms);
186 mms->header_parsed = 1;
187 return res;
188 }
189 } else if (chunk_type == CHUNK_TYPE_DATA) {
190 // read data packet and do padding
191 return read_data_packet(mmsh, len);
192 } else {
193 if (len) {
194 if (len > sizeof(mms->in_buffer)) {
195 av_log(NULL, AV_LOG_ERROR,
196 "Other packet len = %d exceed the in_buffer size %zu\n",
197 len, sizeof(mms->in_buffer));
198 return AVERROR(EIO);
199 }
200 res = ffurl_read_complete(mms->mms_hd, mms->in_buffer, len);

Callers 2

mmsh_open_internalFunction · 0.85
handle_chunk_typeFunction · 0.85

Calls 7

get_chunk_headerFunction · 0.85
av_logFunction · 0.85
av_freepFunction · 0.85
ffurl_read_completeFunction · 0.85
ff_mms_asf_header_parserFunction · 0.85
read_data_packetFunction · 0.85
av_malloczFunction · 0.50

Tested by

no test coverage detected