正在显示
2 个修改的文件
包含
15 行增加
和
0 行删除
| @@ -403,6 +403,7 @@ Remark: | @@ -403,6 +403,7 @@ Remark: | ||
| 403 | ======= | 403 | ======= |
| 404 | ## History | 404 | ## History |
| 405 | 405 | ||
| 406 | +* v2.0, 2016-08-18, fix [srs-librtmp#4](https://github.com/ossrs/srs-librtmp/issues/4) filter frame. | ||
| 406 | * v2.0, 2016-08-10, fix socket timeout for librtmp. | 407 | * v2.0, 2016-08-10, fix socket timeout for librtmp. |
| 407 | * v2.0, 2016-08-08, fix the crash by srs_info log. | 408 | * v2.0, 2016-08-08, fix the crash by srs_info log. |
| 408 | * <strong>v2.0, 2016-08-06, [2.0 beta0(2.0.210)][r2.0b0] released. 89704 lines.</strong> | 409 | * <strong>v2.0, 2016-08-06, [2.0 beta0(2.0.210)][r2.0b0] released. 89704 lines.</strong> |
| @@ -1393,6 +1393,11 @@ int srs_write_h264_raw_frame(Context* context, | @@ -1393,6 +1393,11 @@ int srs_write_h264_raw_frame(Context* context, | ||
| 1393 | ) { | 1393 | ) { |
| 1394 | int ret = ERROR_SUCCESS; | 1394 | int ret = ERROR_SUCCESS; |
| 1395 | 1395 | ||
| 1396 | + // empty frame. | ||
| 1397 | + if (frame_size <= 0) { | ||
| 1398 | + return ret; | ||
| 1399 | + } | ||
| 1400 | + | ||
| 1396 | // for sps | 1401 | // for sps |
| 1397 | if (context->avc_raw.is_sps(frame, frame_size)) { | 1402 | if (context->avc_raw.is_sps(frame, frame_size)) { |
| 1398 | std::string sps; | 1403 | std::string sps; |
| @@ -1425,6 +1430,15 @@ int srs_write_h264_raw_frame(Context* context, | @@ -1425,6 +1430,15 @@ int srs_write_h264_raw_frame(Context* context, | ||
| 1425 | return ret; | 1430 | return ret; |
| 1426 | } | 1431 | } |
| 1427 | 1432 | ||
| 1433 | + // ignore others. | ||
| 1434 | + // 5bits, 7.3.1 NAL unit syntax, | ||
| 1435 | + // H.264-AVC-ISO_IEC_14496-10.pdf, page 44. | ||
| 1436 | + // 7: SPS, 8: PPS, 5: I Frame, 1: P Frame | ||
| 1437 | + SrsAvcNaluType nut = (SrsAvcNaluType)(frame[0] & 0x1f); | ||
| 1438 | + if (nut != SrsAvcNaluTypeSPS && nut != SrsAvcNaluTypePPS && nut != SrsAvcNaluTypeIDR && nut != SrsAvcNaluTypeNonIDR) { | ||
| 1439 | + return ret; | ||
| 1440 | + } | ||
| 1441 | + | ||
| 1428 | // send pps+sps before ipb frames when sps/pps changed. | 1442 | // send pps+sps before ipb frames when sps/pps changed. |
| 1429 | if ((ret = srs_write_h264_sps_pps(context, dts, pts)) != ERROR_SUCCESS) { | 1443 | if ((ret = srs_write_h264_sps_pps(context, dts, pts)) != ERROR_SUCCESS) { |
| 1430 | return ret; | 1444 | return ret; |
-
请 注册 或 登录 后发表评论