Android рдкрд░ WebRTC: рдХреИрд╕реЗ рдХрдИ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

Badoo рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо WebRTC рдорд╛рдирдХ рдФрд░ H.264 рдХреЛрдбреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдбреЗрдХ рдПрдВрдбреНрд░реЙрдЗрдб 5.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд┐рд╕реА рднреА рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ WebRTC рдореЗрдВ H.264 рдХреЛрдбреЗрдХ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред



рдХреНрдпреЛрдВ H.264?


WebRTC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рд╕рддреНрд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрдкрдХрд░рдг рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХреНрд╕ рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЪрд╛рд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХрдИ рдХреЛрдбреЗрдХреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реАрдкреА 8 рдФрд░ рдПрдЪ .264) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ WebRTC рдореЗрдВ рд╕рд╛рдордВрдЬрд╕реНрдп рдХреЗ рдЪрд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рдХреЛрдбреЗрдХ рдЬреЛ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╢реЗрд╖ рд░рд╣рддреЗ рд╣реИрдВред рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рдРрд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рд╡реАрдбрд┐рдпреЛ рдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ H.264 рдХреЛрдбреЗрдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдбрд┐рд╡рд╛рдЗрд╕ VP8 рдХреЛрдбреЗрдХ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреИрдЬреЗрдЯреНрд╕ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рдирдореЗрдВ рдкрд┐рдЫрд▓реА рдкреАрдврд╝рд┐рдпреЛрдВ рдХреЗ рд╕реНрдорд╛рд░реНрдЯрдлрд╝реЛрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╡реАрдбрд┐рдпреЛ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ: рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмреИрдЯрд░реА рдХреЛ рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреБрд░рд╛рдиреЗ рдЧреИрдЬреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред H.264 рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕рдорд░реНрдерди рд╕рдорд╛рди VP8 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

Android рдкрд░ H.264 рд╕рдкреЛрд░реНрдЯ


рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рд╡рд░реНрдгрди , H.264 рдмреЗрд╕рд▓рд╛рдЗрди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рд╕рднреА Android рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ - рдПрдВрдбреНрд░реЙрдЗрдб 3.0 рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ред Badoo рдореЗрдВ, рд╣рдо Android 5.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рдерд╛: рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЧреИрдЬреЗрдЯреНрд╕ рдореЗрдВ рднреА, рд╣рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдорд┐рд▓реАрдВред

рдЗрд╕реЗ рдХрд┐рд╕рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдПрдХ рдирдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рд╕рдВрдЧрддрддрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдХ рдкреАрд╕реА рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо Google рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ Android OS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЧреИрдЬреЗрдЯ рдХреЛ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдЙрддрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реАрдбрд┐рдпреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдгред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░рдирд╛ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ EncodeDecodeTest , MediaCodecTest , DecoderTest рдФрд░ EncoderTest , рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ 4.3 рдХреЗ рдмрд╛рдж рд╕реЗ рдПрдВрдбреНрд░реЙрдпрдб рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдореМрдЬреВрдж рд╣реИрдВред рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЧреНрд░рд╛рдл рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рд╕рдВрд╕реНрдХрд░рдг 4.3 рд╕реЗ рдкрд╣рд▓реЗ, рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╕ рдореМрдЬреВрдж рдирд╣реАрдВ рдереЗ, рдФрд░ рдЙрдирдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реГрджреНрдзрд┐ 5 рдФрд░ 7 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЧрд┐рд░ рдЧрдИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ Android 4.3 Google рдиреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдереА, рд▓реЗрдХрд┐рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ 5.0 рдиреЗ рдЗрд╕ рдЪреЗрдХ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг 5.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдерд╛ред Google рд╕рдореВрд╣ рдЪрд░реНрдЪрд╛-рд╡реЗрдмрдмреНрд░реЗрдЯ рдореЗрдВ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╖рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ ред WebRTC рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЗрдВ, рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рд╣реИрдВ, рдиреЗ рд╣рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рдЖрдЗрдП рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред



WebRTC рдореЗрдВ H.264 рдХрд╛ рд╕рдорд░реНрдерди


рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ HardwareVideoEncoderFactory рд╕реЗ ред

рдЯреЙрдХрд┐рдВрдЧ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ

private boolean isHardwareSupportedInCurrentSdkH264(MediaCodecInfo info) {
  // First, H264 hardware might perform poorly on this model.
  if (H264_HW_EXCEPTION_MODELS.contains(Build.MODEL)) {
    return false;
  }
  String name = info.getName();
  // QCOM H264 encoder is supported in KITKAT or later.
  return (name.startsWith(QCOM_PREFIX) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
      // Exynos H264 encoder is supported in LOLLIPOP or later.
      || (name.startsWith(EXYNOS_PREFIX)
             && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
}

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ рдХреНрд╡рд╛рд▓рдХреЙрдо рдФрд░ рдПрдХреНрд╕рд┐рдиреЛрд╕ рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рдирдХ WebRTC рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрдиреНрдп рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛрдбреЗрдХреНрд╕ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг рд╣реИред рдФрд░ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдкрд░ рдкрд╣рдЪрд╛рдирдирд╛ рдЕрдХреНрд╕рд░ рд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рднреА рдХреЛрдбреЗрдХ рд╡рд┐рд╡рд░рдг Media_codecs.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд┐рдХреНрд╕реЗрд▓ рдПрдХреНрд╕рдПрд▓ рдХреЗ рд▓рд┐рдП рдФрд░ рд╣реБрд╡рд╛рд╡реЗрдИ рдкреА 8 рд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рд╣реИ ред рдЬрдм рдЖрдкрдХреЛ MediaCodecList рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ getCodecInfos () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдбреЗрдХреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕ рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреЛрдбреЗрдХ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВред рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдФрд░ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреА рд╕рд╣реА рдлрд┐рд▓рд┐рдВрдЧ рдХреЛ рд╕реАрдЯреАрдПрд╕ рдЯреЗрд╕реНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредMediaCodecListTest , рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдХреЛрдб рдХреА 160 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдмрдврд╝рдХрд░ 4.3 4.3 рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб 10 рдореЗрдВ 740 рд▓рд╛рдЗрдиреЛрдВ

рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ред рд╕рдЧрд╛рдИ рдореЗрдВ, рд╣рдордиреЗ isHardwareSupportedInCurrentSdkH264 рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, "рд╕рдлреЗрдж" рдХреЛрдбреЗрдХ рд╕реВрдЪреА рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ "рдмреНрд▓реИрдХ" рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдбрдХ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ WebRTC рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ ред

static final String[] SOFTWARE_IMPLEMENTATION_PREFIXES = {"OMX.google.", "OMX.SEC."};

рд▓реЗрдХрд┐рди рдЖрдк рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рд╕рднреА рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓реЗ рдФрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЪрд░реНрдЪрд╛-рд╡реЗрдмреНрд░рдЯ рд╕рдореВрд╣ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ , рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╡реЗ рдХреЛрдбреЗрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдХреЛрдбреЗрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк


рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдбреЗрдХ рдХрд╛ рдЖрд░реЛрд╣рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

MediaCodec mediaCodec = createByCodecName(codecName);
MediaFormat format = MediaFormat.createVideoFormat(mime, width, height);
format.setInteger(MediaFormat.KEY_BIT_RATE, targetBitrateBps);
format.setInteger(MediaFormat.KEY_BITRATE_MODE, VIDEO_ControlRateConstant);
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, colorFormat);
format.setInteger(MediaFormat.KEY_FRAME_RATE, targetFps);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, keyFrameIntervalSec);
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);

рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рдЧрд▓рддреА рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬреЛ рдХреЛрдбреЗрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдПрдХ рдХреЛрдбреЗрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдмрд┐рдЯрд░реЗрдЯ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдбреЗрдХ рд╕реНрд╡рдпрдВ рдЗрд╕реЗ рдЧрд▓рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, WebRTC рдореЗрдВ, BaseBitrateAdjuster рд╡рд░реНрдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ , рдЬрд┐рд╕рдХреЗ рджреЛ рд╡рдВрд╢рдЬ рд╣реИрдВ:

  • DynamicBitrateAdjuster - рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд┐рдЯрд░реЗрдЯ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ
  • FramerateBitrateAdjuster - рдлреНрд░реЗрдо рджрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд┐рдЯрд░реЗрдЯ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдбреЗрдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмрд┐рдЯрд░реЗрдЯ рд╕рдорд╛рдпреЛрдЬрди рддрдВрддреНрд░ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рд╣рдо рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╕реНрдЯреНрд░реАрдо рд╕рдВрдХрд▓реНрдк


рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж MediaCodecInfo рдХреЛрдбреЗрдХ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ, рдЖрдк рдореЗрдВ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рд╣реЛ рд░рд╣реА рджреНрд╡рд╛рд░рд╛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдХреЛрдбреЗрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ CodecCapabilities рд╡рд░реНрдЧ ред рдЙрдирд╕реЗ рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдбреЗрдХ рдЪрдпрдирд┐рдд рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдФрд░ рдлреНрд░реЗрдо рджрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдпрд╣ рдирд┐рдпрдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдкрд╕рд░реНрдЧ "OMX.MARVELL" рдХреЗ рд╕рд╛рде рдХреЛрдбреЗрдХреНрд╕ред рдпрджрд┐ рдзрд╛рд░рд╛ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 4: 3 рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣рд░реЗ рд░рдВрдЧ рдХреА рдзрд╛рд░рд┐рдпрд╛рдБ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЙрд╕реА рд╕рдордп, рдХреЛрдбреЗрдХ рдиреЗ рд╕реНрд╡рдпрдВ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЪрдпрдирд┐рдд рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдФрд░ рдлрд╝реНрд░реЗрдо рджрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

рдмрд┐рдЯ рджрд░ рдореЛрдб


рд╕рднреА рд╡реАрдбрд┐рдпреЛ рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдореЛрдб рдПрдХ рд╕реНрдерд┐рд░ рдмрд┐рдЯрд░реЗрдЯ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдмрд╛рд░ рд╣рдореЗрдВ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдмрд┐рдЯрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛:

format.setInteger(MediaFormat.KEY_BITRATE_MODE, VIDEO_ControlRateVariable);

рдпрд╣ рд▓реЗрдиреЛрд╡реЛ A1000 рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрдкреНрд░реЗрдбрдЯреНрд░рдо рдЪрд┐рдкрд╕реЗрдЯ (рдЕрдм рдпреВрдирд┐рд╕реЛрдХ) рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ "OMX.sprd" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЦреЛрдЬ рдиреЗ рд╣рдореЗрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдУрдПрд╕ рдкрд░ рдПрдХ рдЫрд╣ рд╡рд░реНрд╖реАрдп рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд░рдВрдЧ рдкреНрд░рд╛рд░реВрдк


рдмрд╛рдЗрдЯ-рдмрдлрд░ рдореЛрдб рдореЗрдВ рдХреЛрдбреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

@Nullable
static Integer selectColorFormat(int[] supportedColorFormats, CodecCapabilities capabilities) {
  for (int supportedColorFormat : supportedColorFormats) {
    for (int codecColorFormat : capabilities.colorFormats) {
      if (codecColorFormat == supportedColorFormat) {
        return codecColorFormat;
      }
    }
  }
  return null;
}

рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╕рдорд░реНрдерд┐рдд рд░рдВрдЧ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╣рдореЗрд╢рд╛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, HUAWEI рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ "OMX.IMG.TOPAZред", "OMX.hisi" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ "ред OMX.k3", рдпрд╣ рдирд╣реАрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдХреЗ рдмрд╛рдж рдПрдХ рд▓рдВрдмреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛: рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдХреНрдпрд╛ рдкреНрд░рд╛рд░реВрдк рдЗрди рдХреЛрдбреЗрдХреНрд╕, рд▓реМрдЯ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ COLOR_FormatYUV420SemiPlanar рдкреНрд░рд╛рд░реВрдк ред рдзрд╛рдЧреЗ рдиреЗ рд╣рдореЗрдВ рдПрдХ рдЪреАрдиреА рдлреЛрд░рдо рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреА ред

рдмрд┐рдЯрд░реЗрдЯ рд╕рдорд╛рдпреЛрдЬрди


рдорд╛рдирдХ WebRTC рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ :

private BitrateAdjuster createBitrateAdjuster(VideoCodecMimeType type, String codecName) {
  if (codecName.startsWith(EXYNOS_PREFIX)) {
    if (type == VideoCodecMimeType.VP8) {
        // Exynos VP8 encoders need dynamic bitrate adjustment.
        return new DynamicBitrateAdjuster();
      } else {
        // Exynos VP9 and H264 encoders need framerate-based bitrate adjustment.
        return new FramerateBitrateAdjuster();
    }
  }
  // Other codecs don't need bitrate adjustment.
  return new BaseBitrateAdjuster();
}

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Exynos рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдмрд┐рдЯрд░реЗрдЯ рд╕рдорд╛рдпреЛрдЬрди рдмрдВрдж рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд╡рд╛рд▓рдХреЙрдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ Exynos рдФрд░ рдХреНрд╡рд╛рд▓рдХреЙрдо рдорд╛рдирдХ рдХреЛрдб рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде "OMX.MTKред" рдЗрд╕реЗ рднреА рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ HUAWEI рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ "OMX.IMG.TOPAZ" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛ, "OMX.hisiред" рдпрд╛ "OMX.k3"ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпреЗ рдХреЛрдбрдХ рдмрд┐рдЯрд░реЗрдЯ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдо рдХреЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕рднреА рдлреНрд░реЗрдо рдХреЛрдбреЗрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХреЛрдбреЗрдХреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рджреВрдВрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб 5.0 рдФрд░ 5.1 рдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛ред рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗ рдХреНрдпреЛрдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЧреИрд░-рдорд╛рдирдХ рдХреЛрдбреЗрдХ рдЫреЛрдЯреЗ рд╣реЛрддреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕реЗ рдиреАрдЪреЗ рдЧреНрд░рд╛рдл рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд╕реНрдХреЗрд▓ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реНрдкреНрд░реЗрдбрдЯреНрд░рдо, рдореАрдбрд┐рдпрд╛рдЯреЗрдХ, рд╣реБрд╡рд╛рд╡реЗрдИ рдФрд░ рдорд╛рд░реНрд╡реЗрд▓ рдЪрд┐рдкрд╕реЗрдЯ рдереЗ - рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдиреЗ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред

рдкрд░рд┐рдгрд╛рдо


рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдордиреЗ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ H.264 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдлрд┐рд░ рднреА Android рд╣рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо Badoo рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 2014-2016 рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЕрднреА рднреА рдХрд╛рдлреА рдХреБрдЫ рдЙрдкрдХрд░рдг рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдпрд╛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрджреНрдпрдкрд┐ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рдкрд┐рдЫрд▓реА рдкреАрдврд╝реА рдХреЗ рдЧреИрдЬреЗрдЯреНрд╕ рдХрд╛ рдЕрдиреБрдкрд╛рдд рдХрд╛рдлреА рдзреАрд░реЗ-рдзреАрд░реЗ рдШрдЯ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рд╕рдордп рддрдХ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдм Stadia рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдпрд╣рд╛рдВ рд╡реАрдбрд┐рдпреЛ рд╣реИ) рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг Google рджреНрд╡рд╛рд░рд╛ WebRTC рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИрдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде), рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рдФрд░ рдмреЗрд╣рддрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡реАрдбрд┐рдпреЛ рд╕рдВрдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдмрди рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ WebRTC рдореЗрдВ H.264 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

All Articles