
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ VLC рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП C рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЯреАрд╡реА рд╢реЛ рдФрд░ рдлрд┐рд▓реНрдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓рд┐рдЦрд╛ред рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░
рдЖрдЗрдбрд┐рдпрд╛ рдФрд░
рдлрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЙрд▓реНрдпреВрд╢рдВрд╕ рдХреЗ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рдкреНрд▓рдЧрдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдкреНрд▓рдЧрдЗрди рдФрд░
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рд╣реИрдВред рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣ рдЕрдВрддрд┐рдо рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ,
рдкрд░рд┐рдгрд╛рдо ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред
рд╡рд┐рдЪрд╛рд░
рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦрдиреЗ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╡рд┐рджреЗрд╢реА рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдореЗрд╢рд╛ рд╕рдорд╕реНрдпрд╛ рд░рд╣реА рд╣реИред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдпрд╛ рдлрд┐рд▓реНрдо рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬрдм рдЖрдк рдЬреЛ рдХрд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЖрдзрд╛ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЖрдк рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЛ рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рднрд╛рд╖рдг рдореЗрдВ рдХреЛрдИ рдЕрдкрд░рд┐рдЪрд┐рдд рд╢рдмреНрдж рдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдкрд╛рда рджреНрд╡рд╛рд░рд╛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдореБрдЭреЗ рд░реВрд╕реА рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╕рдВрдж рдирд╣реАрдВ рдерд╛ - рдорд╕реНрддрд┐рд╖реНрдХ рдЕрдкрдиреА рдореВрд▓ рднрд╛рд╖рд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рджреЗрд╢реА рднрд╛рд╖рдг рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрд╣реАрдВ рдкрдврд╝рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд░реВрд╕реА рдореЗрдВ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдлрд┐рд░ рдореВрд▓ рдореЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рддрд░реАрдХрд╛ рдореБрдЭреЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░, рджреВрд╕рд░реА рдмрд╛рд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ - рдкреНрд░реЗрд░рдгрд╛ рдЦреЛ рдЬрд╛рддреА рд╣реИред
рд╡рд┐рджреЗрд╢реА рдЯреАрд╡реА рд╢реЛ рджреЗрдЦрдиреЗ рдХреЗ рд╕рд╛рде рд╕рднреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рддрдХрдиреАрдХреА рджрд╕реНрддрд╛рд╡реЗрдЬ, рд▓реЗрдЦ рдФрд░ рдХрд┐рддрд╛рдмреЗрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдХрд┐рдВрдбрд▓ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд░реАрдбрд░ рдкрд░ рдХрд┐рддрд╛рдмреЗрдВ рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдХреНрд╢рдирд░реА рдлрд╝рдВрдХреНрд╢рди рд╡рд╣рд╛рдБ рдардВрдбрд╛ рд╣реИ - рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЗ рдПрдХ рд╕реНрдкрд░реНрд╢ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╢рдмреНрдж рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдХреЗ рд▓реЗрдЦреЛрдВ рдФрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдореИрдВ
Yandex.Translation рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛
рд╣реВрдВ ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдЕрдкрд░рд┐рдЪрд┐рдд рд╢рдмреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╡реНрдпрд╛рдХреБрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛, рдЕрдВрдЧреНрд░реЗрдЬреА рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдЯреАрд╡реА рд╢реЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣реА рдПрдХ рдЕрд╕рдВрдЧрдд рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░реВрд╕реА рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣рдЯреЗрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реА рдЬрд╝рд░реВрд░рдд рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдореАрдбрд┐рдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдореИрдВ рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕реЗрдХрдВрдб рдкрд╣рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдХреЛ рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░, рдПрдХ рдЕрд╕рдВрдЧрдд рдЕрдВрд╢ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдиреЗ рдЦреБрдж рд╣реА рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдЦреИрд░, рдЕрдВрдЧреНрд░реЗрдЬреА рдЯреНрд░реИрдХ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдЦрдВрдб рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдпрд╣реА рд╣реИ, рдореБрдЭреЗ рдПрдХ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднреА рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдпрд╣ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдПрдХ рдкреАрд╕реА рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдПрдХ рд▓реИрдкрдЯреЙрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реА рдкрд╕рдВрдж рддреБрд░рдВрдд рд╡реАрдПрд▓рд╕реА рдкрд░ рдЧрд┐рд░ рдЧрдИред рд╣рдмреНрд░ рдкрд░ рдореБрдЭреЗ
рдПрдХ рд▓реЗрдЦ рднреА рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ
@Idunno рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ LUA рдкрд░ VLC рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реИред рд╡реИрд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рд▓рд┐рдЦрд╛ рдерд╛) рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡реАрдПрд▓рд╕реА рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (5.5% рд╕реЗ рдЕрдзрд┐рдХ)ред рдЕрд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░рдг, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ LUA рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, LUA API рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
README рдореЗрдВ , рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ VLC рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ GitHub
@Idunno рдкрд░ рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрд▓рдпреВрдП рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕реА рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рд╕реА рдореЗрдВ рдЖрдЦрд┐рд░реА рдмрд╛рд░ 7 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рдкреНрд▓рдЧрдЗрди
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡реАрдПрд▓рд╕реА рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ
рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВ ред рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рд╕реАрдЦрд╛ рдХрд┐ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡реАрдПрд▓рд╕реА рдореЗрдВ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрд░реНрдиреЗрд▓ (
libVLCCore ), рдЬреЛ рдЗрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ: рдЖрдВрддрд░рд┐рдХ (
рдЗрди-рдЯреНрд░реА ) рдФрд░ рдмрд╛рд╣рд░реА (
рдЖрдЙрдЯ-рдСрдл-рдЯреНрд░реА )ред рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ VLC рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдЗрдХрдЯреНрдареЗ рд╣реЛрддреЗ рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдмрд╛рдж рд╡рд╛рд▓реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕реА рдореЗрдВ рдЕрдкрдирд╛ рдкреНрд▓рдЧ-рдЗрди (рдореЙрдбреНрдпреВрд▓) рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рднреА рд╣реИред рдпрд╣ рд▓реЗрдЦ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрдм VLC рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рд╕рдВрджреЗрд╢ "
рдирдорд╕реНрдХрд╛рд░, <name> " рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдорд╛рди <name) рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ)ред рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
set_category(CAT_INTERFACE)
рдмрд╛рдж рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
set_subcategory( SUBCAT_INTERFACE_CONTROL )
рдЦреИрд░, рдЬреЛ рдХреБрдЫ рднреА рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдПрдХ рдмрд╛рд╣рд░реА рдкреНрд▓рдЧрдЗрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ
рд▓рд┐рдП рдПрдХ
рдирд┐рд░реНрджреЗрд╢ рднреА рд╣реИред рдпрд╣рд╛рдВ рдпрд╣
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдЕрдиреБрднрд╛рдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реАрдПрд▓рд╕реА рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдмрд╛рд╣рд░реА рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдореИрдХреНрд░реЛрдЬрд╝
N_()
,
_()
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
#define DOMAIN "vlc-myplugin" #define _(str) dgettext(DOMAIN, str) #define N_(str) (str)
рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП, рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдпрд╛ рдСрдЯреЛрдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рдореИрдВрдиреЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдЪреБрдирд╛ред Makefile рдореЗрдВ рдЖрдкрдХреЛ
MODULE_STRING
рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ - рдЕрдм рдЙрдиреНрд╣реЗрдВ
pkg-config рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИ:
hello.c #ifdef HAVE_CONFIG_H # include "config.h" #endif #define DOMAIN "vlc-myplugin" #define _(str) dgettext(DOMAIN, str) #define N_(str) (str) #include <stdlib.h> /* VLC core API headers */ #include <vlc_common.h> #include <vlc_plugin.h> #include <vlc_interface.h> /* Forward declarations */ static int Open(vlc_object_t *); static void Close(vlc_object_t *); /* Module descriptor */ vlc_module_begin() set_shortname(N_("Hello")) set_description(N_("Hello interface")) set_capability("interface", 0) set_callbacks(Open, Close) set_category(CAT_INTERFACE) set_subcategory( SUBCAT_INTERFACE_CONTROL ) add_string("hello-who", "world", "Target", "Whom to say hello to.", false) vlc_module_end () /* Internal state for an instance of the module */ struct intf_sys_t { char *who; }; /** * Starts our example interface. */ static int Open(vlc_object_t *obj) { intf_thread_t *intf = (intf_thread_t *)obj; /* Allocate internal state */ intf_sys_t *sys = malloc(sizeof (*sys)); if (unlikely(sys == NULL)) return VLC_ENOMEM; intf->p_sys = sys; /* Read settings */ char *who = var_InheritString(intf, "hello-who"); if (who == NULL) { msg_Err(intf, "Nobody to say hello to!"); goto error; } sys->who = who; msg_Info(intf, "Hello %s!", who); return VLC_SUCCESS; error: free(sys); return VLC_EGENERIC; } /** * Stops the interface. */ static void Close(vlc_object_t *obj) { intf_thread_t *intf = (intf_thread_t *)obj; intf_sys_t *sys = intf->p_sys; msg_Info(intf, "Good bye %s!", sys->who); /* Free internal state */ free(sys->who); free(sys); }
makefile LD = ld CC = cc PKG_CONFIG = pkg-config INSTALL = install CFLAGS = -g -O2 -Wall -Wextra LDFLAGS = LIBS = VLC_PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags vlc-plugin) VLC_PLUGIN_LIBS := $(shell $(PKG_CONFIG) --libs vlc-plugin) VLC_PLUGIN_DIR := $(shell $(PKG_CONFIG) --variable=pluginsdir vlc-plugin) plugindir = $(VLC_PLUGIN_DIR)/misc override CC += -std=gnu99 override CPPFLAGS += -DPIC -I. -Isrc override CFLAGS += -fPIC override LDFLAGS += -Wl,-no-undefined,-z,defs override CPPFLAGS += -DMODULE_STRING=\ override CFLAGS += $(VLC_PLUGIN_CFLAGS) override LIBS += $(VLC_PLUGIN_LIBS) all: libhello_plugin.so install: all mkdir -p -- $(DESTDIR)$(plugindir) $(INSTALL) --mode 0755 libhello_plugin.so $(DESTDIR)$(plugindir) install-strip: $(MAKE) install INSTALL= uninstall: rm -f $(plugindir)/libhello_plugin.so clean: rm -f -- libhello_plugin.so src/*.o mostlyclean: clean SOURCES = hello.c $(SOURCES:%.c=src/%.o): $(SOURCES:%.c=src/%.c) libhello_plugin.so: $(SOURCES:%.c=src/%.o) $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) .PHONY: all install install-strip uninstall clean mostlyclean
рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реАрдПрд▓рд╕реА рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░, рд╕рд╛рде рд╣реА рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдкрдХрд░рдгред рдбреЗрдмрд┐рдпрди / рдЙрдмрдВрдЯреВ рдкрд░, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
sudo apt-get install vlc libvlc-dev libvlccore-dev gcc make pkg-config
рджрд░рдЕрд╕рд▓, рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рд╣рдо рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЗрдХрдЯреНрдард╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
sudo make install
рдкреНрд▓рдЧрдЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реАрдПрд▓рд╕реА рдХреЛ рдХрдВрд╕реЛрд▓ рд╕реЗ рднреА рдЪрд▓рд╛рдПрдВ:
vlc
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдордиреЗ рдХреЛрдИ "
рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб " рдирд╣реАрдВ рджреЗрдЦрд╛ред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЛ рдкрд╣рд▓реЗ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЦреЛрд▓реЗрдВ (
рдЯреВрд▓ >
рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ ), рдЙрдиреНрдирдд рджреГрд╢реНрдп рдкрд░ рдЬрд╛рдПрдВ (
рд╕рднреА рджрд┐рдЦрд╛рдПрдБ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдореВрд╣ рдореЗрдВ рдЪрдпрди рдХрд░реЗрдВ) рдФрд░ рдмрд╛рдПрдВ рдкреИрдирд▓
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкреЗрдбрд╝ рдореЗрдВ рдвреВрдВрдвреЗрдВ>
рдирд┐рдпрдВрддреНрд░рдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - рд╣рдорд╛рд░реЗ
рд╣реИрд▓реЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░реЗрдВред

рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рд╡реАрдПрд▓рд╕реА рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред

рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдПрдБ
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрд╕рдбреАрдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡реАрдПрд▓рд╕реА рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рд╣реЗрдбрд░ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкрд╣рд▓реЗ, sdk рдирд┐рдпрдорд┐рдд VLC рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдЕрдм рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, VLC рд╕рдВрд╕реНрдХрд░рдг 3.0.8 рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрд╕реЗрдВрдмрд▓реА
ftp://ftp.videolan.org/pub/videolan/vlc/3.0.8/win64/vlc-3.0.8-win64.7z рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (7z рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ --Secondary)ред
рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрд┐рд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
C: \ Projects рдХреЗ рд▓рд┐рдП ред Sdk рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрд░рд╛рд▓реЗрдЦ рдореЗрдВ рд╕реНрд╡рдпрдВ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рднреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
C: \ Projects \ vlc-3.0.8 \ sdk \ lib \ pkgconfig \ vlc-plugin.pc ,
рдЙрдкрд╕рд░реНрдЧ рдФрд░
pluginsdir рдЪрд░ рдореЗрдВ
sdk рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкрде рдХрд╛ рд╕рдВрдХреЗрдд рдФрд░
рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреНрд░рдорд╢рдГ:
prefix=/c/Projects/vlc-3.0.8/sdk pluginsdir=/c/Projects/vlc-3.0.8/plugins
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
MSYS2 рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (
C: \ msys64 \ msys2.exe ) рдФрд░ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ MSYS2 рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
pacman -Syu
рдЕрдЧрд▓рд╛, MSYS2 рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ
pacman -Su
рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЯреВрд▓рдЪрд┐рди рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
pacman -S base-devel mingw-w64-x86_64-toolchain
рдЕрдм рдЬрдм рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдХреБрдЫ рдЕрд╕рдорд░реНрдерд┐рдд MinGW рдмрд┐рд▓реНрдб рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЗрдХрдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ:
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╛рдЗрд▓ LD = ld CC = cc PKG_CONFIG = pkg-config INSTALL = install CFLAGS = -g -O2 -Wall -Wextra LDFLAGS = LIBS = VLC_PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags vlc-plugin) VLC_PLUGIN_LIBS := $(shell $(PKG_CONFIG) --libs vlc-plugin) VLC_PLUGIN_DIR := $(shell $(PKG_CONFIG) --variable=pluginsdir vlc-plugin) plugindir = $(VLC_PLUGIN_DIR)/misc override CC += -std=gnu99 override CPPFLAGS += -DPIC -I. -Isrc override CFLAGS += -fPIC override LDFLAGS += -Wl,-no-undefined override CPPFLAGS += -DMODULE_STRING=\ override CFLAGS += $(VLC_PLUGIN_CFLAGS) override LIBS += $(VLC_PLUGIN_LIBS) SUFFIX := so ifeq ($(OS),Windows_NT) SUFFIX := dll endif all: libhello_plugin.$(SUFFIX) install: all mkdir -p -- $(DESTDIR)$(plugindir) $(INSTALL) --mode 0755 libhello_plugin.$(SUFFIX) $(DESTDIR)$(plugindir) install-strip: $(MAKE) install INSTALL= uninstall: rm -f $(plugindir)/libhello_plugin.$(SUFFIX) clean: rm -f -- libhello_plugin.$(SUFFIX) src/*.o mostlyclean: clean SOURCES = hello.c $(SOURCES:%.c=src/%.o): $(SOURCES:%.c=src/%.c) libhello_plugin.$(SUFFIX): $(SOURCES:%.c=src/%.o) $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS) .PHONY: all install install-strip uninstall clean mostlyclean
рдЪреВрдВрдХрд┐ MSYS2 рдХреЛ VLC рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ sdk рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ sdk рд╕реЗ
PKG_CONFIG_PATH рдкрд░реНрдпрд╛рд╡рд░рдг
рдЪрд░ рдореЗрдВ
pkgconfig рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред MinGW рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ (
C: \ msys64 \ mingw64.exec ) рдФрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
export PKG_CONFIG_PATH=/c/projects/vlc-3.0.8/sdk/lib/pkgconfig:$PKG_CONFIG_PATH make install
рдкреНрд▓рдЧрдЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реАрдПрд▓рд╕реА рдХреЛ рдХрдВрд╕реЛрд▓ рд╕реЗ рднреА рдЪрд▓рд╛рдПрдВ:
/c/projects/vlc-3.0.8/vlc
рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рд╡реАрдПрд▓рд╕реА рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд▓рдЧрдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдмрджрд▓реЗрдВ, рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░реЗрдВ) рдФрд░ рдХреАрдмреЛрд░реНрдб рдХреАрд╕реНрдЯреНрд░реЛрдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрд╣ рд╕рдм рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рдкреНрд░рд▓реЗрдЦрди рдХреА рдУрд░ рд░реБрдЦ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдореБрдЭреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдорд┐рд▓реЗ, рдЬреЛ рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
рд╡реАрдПрд▓рд╕реА рдореАрдбрд┐рдпрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░
рд╡реАрдПрд▓рд╕реА рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдПрдкреАрдЖрдИ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ ред
рд╡реАрдПрд▓рд╕реА рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдореЙрдбреНрдпреВрд▓ (400+) рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрд░рдВрднреАрдХрд░рдг / рдЕрдВрддрд┐рдордХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА
vlc_module_begin () -
vlc_module_end () рдмреНрд▓реЙрдХ рдореЗрдВ
set_capability () рдФрд░
set_callbacks () рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╡рд░реНрдгрд┐рдд рд╣реИ ред рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди / рдлрд╝рд╛рдЗрдирд▓реАрдЬрд╝реЗрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░
рдУрдкрди рдПрдВрдб
рдХреНрд▓реЛрдЬрд╝ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВ:
static int Open(vlc_object_t *) static void Close(vlc_object_t *)
vlc_object_t VLC рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрдиреНрдп рд╕рднреА рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ (рд▓реЗрдЦ
Object_Management рджреЗрдЦреЗрдВ)ред
Vlc_object_t рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд╡рд╛рдЗрдВрдЯрд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ
рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
set_capability () рдореИрдХреНрд░реЛ рдореЗрдВ
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рди
рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ ред рддрджрдиреБрд╕рд╛рд░,
рдУрдкрди рдПрдВрдб
рдХреНрд▓реЛрдЬ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ, рдореБрдЭреЗ
vlc_object_t рдХреЛ
intf_thread_t рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ ред
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд
рдкреНрд░реЗрдХреНрд╖рдХ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред VLC рдПрдХ
"рдСрдмреНрдЬреЗрдХреНрдЯ рдЪрд░" рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (
рдЪрд░ рджреЗрдЦреЗрдВ), рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ
vlc_object_t (рдФрд░ рдЗрд╕рдХреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡) рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдЗрди рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЗрд╕ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рд╣реЙрдЯрдХреАрдЬрд╝ рдореЙрдбреНрдпреВрд▓ (
рдореЙрдбреНрдпреВрд▓ / рдирд┐рдпрдВрддреНрд░рдг / рд╣реЙрдЯрдХреАрд╕реЗрдХ ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рд╣реЙрдЯрдХреА рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдУрдкрди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ,
ActionEvent рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреА
-рдПрдХреНрд╢рди рдЪрд░ рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
var_AddCallback( p_intf->obj.libvlc, "key-action", ActionEvent, p_intf );
Vlc_object_t рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ, рдПрдХ рдЪрд░ рдирд╛рдо, рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
var_AddCallback рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ
рдХреЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
static int ActionEvent(vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *)
Vlc_object_t рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ, рдЪрд░ рдХрд╛ рдирд╛рдо, рдЗрд╕ рдЪрд░ рдХреЗ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдореВрд▓реНрдпреЛрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рджрдмрд╛рдП рдЧрдП рд╣реЙрдЯрдХреА рд╕рдВрдпреЛрдЬрди рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛), рд╕рд╛рде рд╣реА рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ред
рд╣реЙрдЯрдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
рдкреБрдЯрдПрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ
рдПрдХреНрд╢рдирдЗрд╡реЗрдВрдЯ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
PutAction рдлрд╝рдВрдХреНрд╢рди рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ (
i_action ) рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдПрдХ рдШрдЯрдирд╛ рдХреЗ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░, рд╕реНрд╡рд┐рдЪ рдСрдкрд░реЗрдЯрд░ рдХреА рдорджрдж рд╕реЗ, рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ
ACTIONID_JUMP_BACKWARD_SHORT
рдШрдЯрдирд╛
ACTIONID_JUMP_BACKWARD_SHORT
рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд┐рд╡рд╛рдЗрдВрдб рдЕрдВрддрд░рд╛рд▓ рдХреЛ VLC рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рд╡реИрд░рд┐рдПрдмрд▓
рд╢реЙрд░реНрдЯ-рдЬрдВрдк-рд╕рд╛рдЗрдЬ рд╕реЗ ) рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
mtime_t it = var_InheritInteger( p_input, varname );
рдЦреЗрд▓реА рдЬрд╛ рд░рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдЯрд╛рдЗрдо-рдСрдлрд╝- рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЙрд╕ рд╕рдордп (рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ) рдХреЗ рдЕрдиреБрд░реВрдк рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рдкреНрд▓реЗрдмреИрдХ рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
var_SetInteger( p_input, "time-offset", it * sign * CLOCK_FREQ );
рдлрд╛рд╕реНрдЯ-рдлреЙрд░рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд╛рд╕реНрдЯ-рд░рд┐рд╡рд░реНрд╕ рдХреЗ рд▓рд┐рдП - рдирдХрд╛рд░рд╛рддреНрдордХред
CLOCK_FREQ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрдХрдВрдб рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕реА рддрд░рд╣, рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдмрджрд▓рддрд╛ рд╣реИ (
ACTIONID_AUDIO_TRACK
рдШрдЯрдирд╛)ред рдХреЗрд╡рд▓ рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░
рдСрдбрд┐рдпреЛ-рдПрд╕ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реАрдорд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЦреЗрд▓рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рдЖрдк
var_Change () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЪрд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
vlc_value_t list, list2; var_Change( p_input, "audio-es", VLC_VAR_GETCHOICES, &list, &list2 );
рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХреНрд╕ рдХрд╛ рдирд╛рдо)ред рдЕрдм рд╣рдо
var_Set () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
var_Set( p_input, "audio-es", list.p_list->p_values[i] );
рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░реЗрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреАрдмреЛрд░реНрдб рдИрд╡реЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдПрдХ рдирдпрд╛ рд╣реЙрдЯрдХреА рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрд╛ред рд╕рднреА рд╣реЙрдЯрдХреАрдЬрд╝ рдХреЛ VLC рдХрд░реНрдиреЗрд▓ рдХреЛрдб (
src / misc / actions.c ) рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рдХреАрд╕реНрдЯреНрд░реЛрдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рд╛,
рдХреБрдВрдЬреА-рджрдмрд╛рдП рдЧрдП рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛:
var_AddCallback( p_intf->obj.libvlc, "key-pressed", KeyboardEvent, p_intf );
рдХреБрдВрдЬреА-рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдЪрд░ рдЕрдВрддрд┐рдо рдХреБрдВрдЬреА рдХреЗ рдЕрдиреБрд░реВрдк рд╡рд░реНрдг рдХреЛрдб (рдпреВрдирд┐рдХреЛрдб рдореЗрдВ) рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк
"1" рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ
рдХреБрдВрдЬреА рджрдмрд╛рдП рдЧрдП рдЪрд░ рдХреЛ рдорд╛рди
49 (0x00000031 рдХреЛ 16 рд╡реЗрдВ рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ) рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдЕрдиреНрдп рдЪрд░рд┐рддреНрд░ рдХреЛрдб
unicode-table.com рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдХреБрдВрдЬреА-рджрдмрд╛рдП рдЧрдП рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рд╕рдВрд╢реЛрдзрдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рджрдмрд╛рд╡ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдЪреМрдерд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдЯ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "
Ctrl + 1 "
рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди
рджрдмрд╛рддреЗ рд╕рдордп ,
рдХреБрдВрдЬреА рджрдмрд╛рдП рдЧрдП рдЪрд░ рдХрд╛ рдорд╛рди 0x
04 000031 (00000
1 00 00000000 00000000 00110001
2 ) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдореБрдЦ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдЕрд░реНрде рдмрддрд╛рддреА рд╣реИ:
"
Shift + 1 " рд╕рдВрдпреЛрдЬрди рдХреЛ рджрдмрд╛рддреЗ рд╕рдордп рдореВрд▓реНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЪреВрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "
! ", рдлрд┐рд░ рдкрд╣рд▓реА рдмрд╛рдЗрдЯ рдХрд╛ рдореВрд▓реНрдп рдЗрд╕ рдЪрд░рд┐рддреНрд░ рдХреЗ рдХреЛрдб рдХреЗ рдпреВрдирд┐рдХреЛрдб (0x00000021) рдореЗрдВ рд╣реЛрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
рдореИрдВрдиреЗ рдЕрдкрдиреЗ
TIP рдкреНрд▓рдЧрдЗрди рдХреЛ "рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдЗрдЯ, рдкреНрд▓реАрдЬ" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рджрд┐рдпрд╛, рдЯрд┐рдк рдХрд╛ рдЕрдиреБрд╡рд╛рдж "рд╕рдВрдХреЗрдд" рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб
GitHub рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ
рд╣реИ , рдЬрд╣рд╛рдВ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреНрд▓рдЧ-рдЗрди рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
libtip_plugin.dll рдлрд╝рд╛рдЗрд▓ (Linux рдХреЗ рд▓рд┐рдП libtip_plugin.so) рдХреЛ
<path-to-vlc> / plugins рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Windows рдкрд░, VLC рдЖрдорддреМрд░ рдкрд░
C: \ Program Files \ VideoLAN \ VLC рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдкрд░, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
whereis vlc
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдмрдВрдЯреВ рдореЗрдВ, рд╡реАрдПрд▓рд╕реА
/ usr / lib / x86_64-linux-gnu / vlc рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╡реАрдПрд▓рд╕реА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдореЗрди рдореЗрдиреНрдпреВ рдУрдкрди
рдЯреВрд▓реНрд╕ >
рдкреНрд░реЗрдлрд░реЗрдВрд╕ рдореЗрдВ , рдПрдбрд╡рд╛рдВрд╕реНрдб рд╡реНрдпреВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ (рдСрд▓реНрдЯ рдЗрди рдж
рд╢реЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЧреНрд░реБрдк), рдмрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ
рдЗрдВрдЯрд░рдлреЗрд╕ >
рдХрдВрдЯреНрд░реЛрд▓ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░
рдЯреАрдЖрдИрдкреА (рдЗрд╕рдХреЗ рдмрд╛рдж рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдХрд░реЗрдВ, рдкреНрд▓реАрдЬ) рдХреЗ рдЖрдЧреЗ рд╡рд╛рд▓реЗ рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░реЗрдВред рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ рдЖрдкрдХреЛ рд╡реАрдПрд▓рд╕реА рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдЖрдк рдореБрдЦреНрдп рдФрд░ рд╕рд╣рд╛рдпрдХ (рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП) рдСрдбрд┐рдпреЛ рдкрдЯрд░рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рд╕рдордп (рд╕реЗрдХрдВрдб рдореЗрдВ) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рд╕рд╣рд╛рдпрдХ рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░реЗрдЧрд╛ред

рдкреНрд▓рдЧрдЗрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рдЬреЛрдбрд╝реЗ:
- " / " рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП
- рдореБрдЦреНрдп рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╡реАрдбрд┐рдпреЛ рдЯреБрдХрдбрд╝реЗ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП " Shift + / "
рдЕрдиреБрд╡рд╛рдж рдФрд░ рд░реАрдЯреНрд░реА рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдкреНрд▓рдЧрдЗрди рдХреНрд░рдорд╢рдГ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ
"TIP: Translate" рдФрд░
"TIP: repeat" рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╣реА рд╕рд╛рдордЧреНрд░реА рдЪреБрдирдирд╛ рд╣реИ, рдЕрдЧрд░ рдХрдо рд╕реЗ рдХрдо рдЖрдзреЗ рд╡рд┐рджреЗрд╢реА рднрд╛рд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд▓рдЧрдЗрди рдмрд╛рдХреА рдХреЛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдЕрдиреНрдпрдерд╛, рдкреНрд▓рдЧрдЗрди рд╢рд╛рдпрдж рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред