Skip to content

Commit

Permalink
fix coredump bug: caused by publish stream that codec is unsupport, s…
Browse files Browse the repository at this point in the history
…ush as G.711, H.263 (#2526)
  • Loading branch information
Haibo Chen authored Aug 13, 2021
1 parent 29dea37 commit aad90c7
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
12 changes: 10 additions & 2 deletions trunk/src/app/srs_app_dash.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,11 @@ srs_error_t SrsDash::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* form
if (!enabled) {
return err;
}


if (!format->acodec) {
return err;
}

if ((err = controller->on_audio(shared_audio, format)) != srs_success) {
return srs_error_wrap(err, "Consume audio failed");
}
Expand All @@ -555,7 +559,11 @@ srs_error_t SrsDash::on_video(SrsSharedPtrMessage* shared_video, SrsFormat* form
if (!enabled) {
return err;
}


if (!format->vcodec) {
return err;
}

if ((err = controller->on_video(shared_video, format)) != srs_success) {
return srs_error_wrap(err, "Consume video failed");
}
Expand Down
6 changes: 6 additions & 0 deletions trunk/src/app/srs_app_source.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -931,6 +931,12 @@ srs_error_t SrsOriginHub::on_audio(SrsSharedPtrMessage* shared_audio)
if ((err = format->on_audio(msg)) != srs_success) {
return srs_error_wrap(err, "format consume audio");
}

// Ignore if no format->acodec, it means the codec is not parsed, or unsupport/unknown codec
// such as G.711 codec
if (!format->acodec) {
return err;
}

// cache the sequence header if aac
// donot cache the sequence header to gop_cache, return here.
Expand Down
12 changes: 10 additions & 2 deletions trunk/src/kernel/srs_kernel_ts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3064,7 +3064,11 @@ srs_error_t SrsTsTransmuxer::write_audio(int64_t timestamp, char* data, int size
if ((err = format->on_audio(timestamp, data, size)) != srs_success) {
return srs_error_wrap(err, "ts: format on audio");
}


if (!format->acodec) {
return err;
}

// ts support audio codec: aac/mp3
srs_assert(format->acodec && format->audio);
if (format->acodec->id != SrsAudioCodecIdAAC && format->acodec->id != SrsAudioCodecIdMP3) {
Expand Down Expand Up @@ -3100,7 +3104,11 @@ srs_error_t SrsTsTransmuxer::write_video(int64_t timestamp, char* data, int size
if ((err = format->on_video(timestamp, data, size)) != srs_success) {
return srs_error_wrap(err, "ts: on video");
}


if (!format->vcodec) {
return err;
}

// ignore info frame,
// @see https://github.com/ossrs/srs/issues/288#issuecomment-69863909
srs_assert(format->video && format->vcodec);
Expand Down

0 comments on commit aad90c7

Please sign in to comment.