рд╢реБрдн рджрд┐рди, рд╣реЗрдмреНрд░!
рд╕рд┐рдореНрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдлреЛрди рдХреЗ рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдП рдЧрдП рдереЗред рд╕рдордп рдХреЗ рд╕рд╛рде, рдпреЗ рдирд┐рд░реНрдгрдп рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЕрдЧрд▓реЗ рджреЛ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдкрд╣рд▓рд╛ QtMobility 1.1.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рд┐рдореНрдмрд┐рдпрди рдлреЛрди рд╕реЗ рдЧреИрд░-рддреБрдЪреНрдЫ, рд▓реЗрдХрд┐рди рд▓рдЪреАрд▓реА рдЫрд╡рд┐ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛, рджреВрд╕рд░рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм рдХреЛрдб рдХреЛ рдорд╛рдЗрдЧреЛ 1.2 рд╣рд░рдорд╛рдЯрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдиреЛрдХрд┐рдпрд╛ N900, N950, N9 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред ред
рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрдпреВрдЯреА-рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рддреЛ, рд╕рд┐рдореНрдмрд┐рдпрди рдХреИрдорд░рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдЯреАред
рдореИрдВ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╣реА рдмрдиреА рд░рд╣реА: рдХреИрдорд░реЗ рд╕реЗ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреГрд╢реНрдпрджрд░реНрд╢реА рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛, рдкреНрд░рджрд░реНрд╢рд┐рдд рдЫрд╡рд┐ рдХреЗ рдКрдкрд░ рдХреБрдЫ рд╡рд┐рдЬреЗрдЯ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдХрдИ рд╡реАрдбрд┐рдпреЛ рдлрд╝реНрд░реЗрдо рдХреЛ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдХреИрдорд░реЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред
QtMobility рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдкрд╣рд▓реА рдмрд╛рд░ рдирд┐рд░реНрдгрдп рдЬрдВрдЧрд▓реА рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред рдпрджрд┐ рд╣рдо рджреГрд╢реНрдпрджрд░реНрд╢реА (QVideoWidget рдпрд╛ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ QCameraViewfinder) рдкрд░ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ:
- QVideoWidget рдЦреБрдж рдХреЗ рдКрдкрд░ рдкрд╛рд░рднрд╛рд╕реА рд╡рд┐рдЧреЗрдЯреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреА рдЖрдпрддреЗрдВ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ)
- рдЖрдк рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрд╕рдХреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдЪрдд (QCameraImageCapture рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд╕рд╛рде рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдКрдкрд░ рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рджреГрд╢реНрдпрджрд░реНрд╢реА рдХреЗ рдЕрдВрджрд░ "рдЫрд╡рд┐" рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдо рдХреЗрд╡рд▓ рд╡рд╣реА рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдХреИрдорд░рд╛ рдЦреБрдж рджреЗрдЦрддрд╛ рд╣реИ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо QWidget рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреГрд╢реНрдпрджрд░реНрд╢реА рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ :: рд░реЗрдВрдбрд░ (), рддреЛ рдлрд┐рд░ рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд▓реЗ рдЖрдпрдд рджреЗрдЦреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ QVideoWidget рд╕реНрд╡рдпрдВ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдкрд░ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ, рджреГрд╢реНрдпрджрд░реНрд╢реА рдХреЗ рд▓рд┐рдП QWidget :: paintEvent () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдмреЗрдХрд╛рд░ рд╣реИред
рдЬрдм рдХрд╛рд░реНрдп рдкрд╣рд▓реА рдмрд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдо рдЕрдВрддрддрдГ рджреЗрд╢реА рд╕рд┐рдореНрдмрд┐рдпрди рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрдПред рдкрд░рд┐рдгрд╛рдо рдПрдХ QObject рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдлреНрд░реЗрдо рдкрд░ QPixmap рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдВрдЧрд▓ рднреЗрдЬ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдкрд┐рдХреНрд╕рдореИрдк рдХреЛ рдЖрд╡реЗрджрди рдореЗрдВ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрд╕реЗ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛, рднреЗрдЬрд╛ рдЧрдпрд╛, рдЖрджрд┐ред
рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд▓реВ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП - рдореАрдЧреЛред
рдЖрдЧреЗ, рдореИрдВ рдХреЗрд╡рд▓ Qt рдФрд░ QtMobility рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ, рд╡реИрд╕реЗ, рд╕рд░рд▓ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рд┐рдореНрдмрд┐рдпрдиредрд╕реА ++ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ)ред
рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬреЛ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ Qt рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдореНрдмрд┐рдпрди ^ 3 рдпрд╛ рд╕рд┐рдореНрдмрд┐рдпрди 5th рд╕рдВрд╕реНрдХрд░рдг рдлреЛрди рдкрд░ рдХреИрдорд░реЗ рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреГрд╢реНрдпрджрд░реНрд╢реА рд▓рд┐рдЦреЗрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рдирдП рдлреНрд░реЗрдо рдкрд░ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдЪрд╛рд▓рди рдХреА рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╣рдо QAbstractVideoSurface рд╕рд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЛ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ QAbstractVideoSurface :: supportPixelFormats () рдФрд░ QAbstractVideoSurface :: present () рдЗрд╕рдореЗрдВред рдпрд╣ рдлреНрд░реЗрдо рд╣реИрдВрдбрд▓рд░ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рд╕реЗ рдХреИрдорд░реЗ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рд╡рд░реНрддрдорд╛рди () рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдПрдХ рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдХреЛ рдХреНрдпреВрдореИрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдо рдХреИрдорд░реЗ рдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ "рд╕рддрд╣" (рдлреНрд░реЗрдо рд╣реИрдВрдбрд▓рд░) рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕реЗ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ
- рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐ рдореЗрдВ QImage рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░, рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡реНрдпреВрдлрд╛рдЗрдВрдбрд░ рдХреЗ рдкреЗрдВрдЯ рдПрд╡реЗрдВрдЯ () рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдХреЙрд▓рдмреИрдХ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐ (рдЫрд╡рд┐) рдкреНрд░реЗрд╖рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рд╕рд┐рдЧреНрдирд▓-рд╕реНрд▓реЙрдЯ рдЬреЛрдбрд╝реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рд╡рд░реНрдЧ рд╣рдорд╛рд░реЗ рдЕрдВрддрд┐рдо рджреГрд╢реНрдпрджрд░реНрд╢реА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
PS рдореИрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреВрдВрдЧрд╛ - рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХреНрдпреВрдЯреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
#include <QAbstractVideoSurface>
> рд╡реАрдбрд┐рдпреЛрд╕рд░реНрдлрд╝рд╕рд┐рдореЗрдЧреЗрдЬрд╝реЛрд╕реНрд╡рд░
class VideoSurfaceImageObserver { public: virtual void newImage(QImage) = 0; };
рдЖрдЧреЗ QAbstractVideoSurface рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рд╢реНрд░реЗрдгреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ:
> myvideosurface.h
class myVideoSurface : public QAbstractVideoSurface { Q_OBJECT public: myVideoSurface(VideoSurfaceImageObserver *mObserver, QObject *parent = 0); bool present(const QVideoFrame &frame); QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType type=QAbstractVideoBuffer::NoHandle ) const; private: QVideoFrame m_frame; QImage::Format m_imageFormat; QVideoSurfaceFormat m_videoFormat; VideoSurfaceImageObserver *observer; };
> myvideosurface.cpp
myVideoSurface::myVideoSurface(VideoSurfaceImageObserver *mObserver, QObject *parent) : QAbstractVideoSurface(parent) {
рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рджреГрд╢реНрдпрджрд░реНрд╢реА рд╡рд░реНрдЧ рдмрдирд╛рдПрдБред
> myviewfinder.h
class myViewFinder: public QWidget, public VideoSurfaceImageObserver { Q_OBJECT public: explicit myViewFinder(QWidget *parent = 0); virtual ~myViewFinder();
> myviewfinder.pp
myViewFinder::myViewFinder(QWidget *parent) : QWidget(parent), camera_(0), viewfinder_(0), pix(0) {
рдЕрдм рдЗрдореЗрдЬ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡реНрдпреВрдлрд╛рдЗрдВрдбрд░ рдХреЛ рдХрд╛рд▓реЗ рд░рдВрдЧ рд╕реЗ рдХреНрдпреЛрдВ рднрд░реЗрдВред рд╕рд┐рдореНрдмрд┐рдпрди ^ 3 рдФрд░ рд╕рд┐рдореНрдмрд┐рдпрди 5th рд╕рдВрд╕реНрдХрд░рдг рдлреЛрди рдХрд╛ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ 640x360 рд╣реИ, рдФрд░ рдХреИрдорд░рд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрдо рд╕реЗ рдХрдо 640x480 рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рджреГрд╢реНрдпрджрд░реНрд╢реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреВрд░реНрдг-рд╕реНрдХреНрд░реАрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рдЖрдкрдХреЛ рдХреИрдорд░рд╛ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдХреЛ рднрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдХрд╛рд▓реЗ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рдВрдЧ рдпрд╛ рдЪрд┐рддреНрд░) рд╕реЗ рднрд░реЗрдВ рддрд╛рдХрд┐ рдбреЗрд╕реНрдХрдЯреЙрдк рдпрд╛ рдЕрдиреНрдп рд╡рд┐рдЬреЗрдЯ рджреГрд╢реНрдпрджрд░реНрд╢реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рди рдЪрдордХреЗрдВред
рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдХрд╛рд▓реА рдкрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рджреГрд╢реНрдпрджрд░реНрд╢реА рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рд╡рд┐рдЬреЗрдЯ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЫрд╡рд┐ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдХреНрд░реЙрдк рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рджрд░реНрдж рдХреЛ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
void myViewFinder::paintEvent(QPaintEvent *event){ QPainter painter(this); if(!pix) return; if(!pix->isNull() && this->geometry().width() != 0 && this->geometry().height() != 0 && pix->width() != 0 && pix->height() != 0) {
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рджреГрд╢реНрдпрджрд░реНрд╢реА рдорд┐рд▓рд╛, рдЬрд┐рд╕реЗ рдЖрдЧреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд┐рдЬреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреНрд░реЗрдо рдХреЗ рдиреНрдпреВрдореЗрдЬ () рдореЗрдВ рдЖрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ QVideoWidget рдкрд░ рдПрдХ рдлрд╛рдпрджрд╛ рджреЗрддрд╛ рд╣реИред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдореАрдЧреЛ 1.2 рд╣рд░рдорд╛рдЯрди рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдХреИрдорд░реЗ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЗрд╕рдХреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд:
- рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг
- рдЕрдиреНрдп рдЕрдзрд┐рдХрд╛рд░реА Qt рдФрд░ QtMobility рдкрд░ рдбреЙрдХ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред