Older/MediaServer/Rtsp/RtspSplitter.h
amass 9de3af15eb
All checks were successful
Deploy / PullDocker (push) Successful in 12s
Deploy / Build (push) Successful in 1m51s
add ZLMediaKit code for learning.
2024-09-28 23:55:00 +08:00

83 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (c) 2016-present The ZLMediaKit project authors. All Rights Reserved.
*
* This file is part of ZLMediaKit(https://github.com/ZLMediaKit/ZLMediaKit).
*
* Use of this source code is governed by MIT-like license that can be found in the
* LICENSE file in the root of the source tree. All contributing project authors
* may be found in the AUTHORS file in the root of the source tree.
*/
#ifndef ZLMEDIAKIT_RTSPSPLITTER_H
#define ZLMEDIAKIT_RTSPSPLITTER_H
#include "Common/Parser.h"
#include "Http/HttpRequestSplitter.h"
namespace mediakit{
class RtspSplitter : public HttpRequestSplitter{
public:
/**
* 是否允许接收rtp包
* @param enable
* Whether to allow receiving rtp packets
* @param enable
* [AUTO-TRANSLATED:8de8e1ee]
*/
void enableRecvRtp(bool enable);
protected:
/**
* 收到完整的rtsp包回调包括sdp等content数据
* @param parser rtsp包
* Callback for receiving a complete rtsp packet, including sdp and other content data
* @param parser rtsp packet
* [AUTO-TRANSLATED:4d3c2056]
*/
virtual void onWholeRtspPacket(Parser &parser) = 0;
/**
* 收到rtp包回调
* @param data
* @param len
* Callback for receiving rtp packets
* @param data
* @param len
* [AUTO-TRANSLATED:c8f7c9bb]
*/
virtual void onRtpPacket(const char *data,size_t len) = 0;
/**
* 从rtsp头中获取Content长度
* @param parser
* @return
* Get the Content length from the rtsp header
* @param parser
* @return
* [AUTO-TRANSLATED:f0bc1fb8]
*/
virtual ssize_t getContentLength(Parser &parser);
protected:
const char *onSearchPacketTail(const char *data,size_t len) override ;
const char *onSearchPacketTail_l(const char *data,size_t len) ;
ssize_t onRecvHeader(const char *data,size_t len) override;
void onRecvContent(const char *data,size_t len) override;
private:
bool _enableRecvRtp = false;
bool _isRtpPacket = false;
Parser _parser;
};
}//namespace mediakit
#endif //ZLMEDIAKIT_RTSPSPLITTER_H