mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-07-15 11:29:56 +00:00
FS-8959 #resolve refactor code
This commit is contained in:
parent
0929d7d7a9
commit
a42ab11022
@ -734,28 +734,11 @@ static switch_status_t consume_h263p_bitstream(h264_codec_context_t *context, sw
|
|||||||
return frame->m ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_MORE_DATA;
|
return frame->m ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_MORE_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_t *frame)
|
static switch_status_t consume_h264_bitstream(h264_codec_context_t *context, switch_frame_t *frame)
|
||||||
{
|
{
|
||||||
AVPacket *pkt = &context->encoder_avpacket;
|
AVPacket *pkt = &context->encoder_avpacket;
|
||||||
our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index];
|
our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index];
|
||||||
|
|
||||||
if (!nalu->len) {
|
|
||||||
frame->datalen = 0;
|
|
||||||
frame->m = 0;
|
|
||||||
if (pkt->size > 0) av_free_packet(pkt);
|
|
||||||
// if (context->encoder_avframe->data[0]) av_freep(&context->encoder_avframe->data[0]);
|
|
||||||
context->nalu_current_index = 0;
|
|
||||||
return SWITCH_STATUS_NOTFOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context->av_codec_id == AV_CODEC_ID_H263) {
|
|
||||||
return consume_h263_bitstream(context, frame);
|
|
||||||
} else if (context->av_codec_id == AV_CODEC_ID_H263P) {
|
|
||||||
return consume_h263p_bitstream(context, frame);
|
|
||||||
}
|
|
||||||
|
|
||||||
assert(nalu->len);
|
|
||||||
|
|
||||||
if (nalu->len <= SLICE_SIZE) {
|
if (nalu->len <= SLICE_SIZE) {
|
||||||
uint8_t nalu_hdr = *(uint8_t *)(nalu->start);
|
uint8_t nalu_hdr = *(uint8_t *)(nalu->start);
|
||||||
uint8_t nalu_type = nalu_hdr & 0x1f;
|
uint8_t nalu_type = nalu_hdr & 0x1f;
|
||||||
@ -768,15 +751,13 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_
|
|||||||
return SWITCH_STATUS_MORE_DATA;
|
return SWITCH_STATUS_MORE_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
frame->m = context->nalus[context->nalu_current_index].len ? 0 : 1;
|
if (context->nalus[context->nalu_current_index].len) {
|
||||||
if (frame->m)
|
frame->m = 0;
|
||||||
{
|
|
||||||
if (pkt->size > 0) {
|
|
||||||
av_packet_unref(pkt);
|
|
||||||
}
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
|
||||||
} else {
|
|
||||||
return SWITCH_STATUS_MORE_DATA;
|
return SWITCH_STATUS_MORE_DATA;
|
||||||
|
} else {
|
||||||
|
if (pkt->size > 0) av_packet_unref(pkt);
|
||||||
|
|
||||||
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
uint8_t nalu_hdr = *(uint8_t *)(nalu->start);
|
uint8_t nalu_hdr = *(uint8_t *)(nalu->start);
|
||||||
@ -793,10 +774,8 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_
|
|||||||
frame->datalen = left + 2;
|
frame->datalen = left + 2;
|
||||||
frame->m = 1;
|
frame->m = 1;
|
||||||
context->nalu_current_index++;
|
context->nalu_current_index++;
|
||||||
if (pkt->size > 0) {
|
if (pkt->size > 0) av_packet_unref(pkt);
|
||||||
av_packet_unref(pkt);
|
|
||||||
}
|
|
||||||
|
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
uint8_t start = nalu->start == nalu->eat ? 0x80 : 0;
|
uint8_t start = nalu->start == nalu->eat ? 0x80 : 0;
|
||||||
@ -812,6 +791,28 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_t *frame)
|
||||||
|
{
|
||||||
|
AVPacket *pkt = &context->encoder_avpacket;
|
||||||
|
our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index];
|
||||||
|
|
||||||
|
if (!nalu->len) {
|
||||||
|
frame->datalen = 0;
|
||||||
|
frame->m = 0;
|
||||||
|
if (pkt->size > 0) av_free_packet(pkt);
|
||||||
|
context->nalu_current_index = 0;
|
||||||
|
return SWITCH_STATUS_NOTFOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (context->av_codec_id == AV_CODEC_ID_H263) {
|
||||||
|
return consume_h263_bitstream(context, frame);
|
||||||
|
} else if (context->av_codec_id == AV_CODEC_ID_H263P) {
|
||||||
|
return consume_h263p_bitstream(context, frame);
|
||||||
|
} else {
|
||||||
|
return consume_h264_bitstream(context, frame);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t width, uint32_t height)
|
static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t width, uint32_t height)
|
||||||
{
|
{
|
||||||
int sane = 0;
|
int sane = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user