@@ -122,7 +122,7 @@ def decode(self, encoded_frame: JitterFrame) -> List[Frame]:
122
122
123
123
def create_encoder_context (
124
124
codec_name : str , width : int , height : int , bitrate : int
125
- ) -> Tuple [ VideoCodecContext , bool ] :
125
+ ) -> VideoCodecContext :
126
126
codec = cast (VideoCodecContext , av .CodecContext .create (codec_name , "w" ))
127
127
codec .width = width
128
128
codec .height = height
@@ -133,18 +133,17 @@ def create_encoder_context(
133
133
codec .options = {
134
134
"profile" : "baseline" ,
135
135
"level" : "31" ,
136
- "tune" : "zerolatency" , # does nothing using h264_omx
136
+ "tune" : "zerolatency" ,
137
137
}
138
138
codec .open ()
139
- return codec , codec_name == "h264_omx"
139
+ return codec
140
140
141
141
142
142
class H264Encoder (Encoder ):
143
143
def __init__ (self ) -> None :
144
144
self .buffer_data = b""
145
145
self .buffer_pts : Optional [int ] = None
146
146
self .codec : Optional [VideoCodecContext ] = None
147
- self .codec_buffering = False
148
147
self .__target_bitrate = DEFAULT_BITRATE
149
148
150
149
@staticmethod
@@ -286,32 +285,16 @@ def _encode_frame(
286
285
frame .pict_type = av .video .frame .PictureType .NONE
287
286
288
287
if self .codec is None :
289
- try :
290
- self .codec , self .codec_buffering = create_encoder_context (
291
- "h264_omx" , frame .width , frame .height , bitrate = self .target_bitrate
292
- )
293
- except Exception :
294
- self .codec , self .codec_buffering = create_encoder_context (
295
- "libx264" ,
296
- frame .width ,
297
- frame .height ,
298
- bitrate = self .target_bitrate ,
299
- )
288
+ self .codec = create_encoder_context (
289
+ "libx264" ,
290
+ frame .width ,
291
+ frame .height ,
292
+ bitrate = self .target_bitrate ,
293
+ )
300
294
301
295
data_to_send = b""
302
296
for package in self .codec .encode (frame ):
303
- package_bytes = bytes (package )
304
- if self .codec_buffering :
305
- # delay sending to ensure we accumulate all packages
306
- # for a given PTS
307
- if package .pts == self .buffer_pts :
308
- self .buffer_data += package_bytes
309
- else :
310
- data_to_send += self .buffer_data
311
- self .buffer_data = package_bytes
312
- self .buffer_pts = package .pts
313
- else :
314
- data_to_send += package_bytes
297
+ data_to_send += bytes (package )
315
298
316
299
if data_to_send :
317
300
yield from self ._split_bitstream (data_to_send )
0 commit comments